Issue
I have a BehaviorSubject
that is typed to emit either number | undefined
:
export class MyComponent {
indentation$ = new BehaviorSubject<number | undefined>(undefined)
...
}
I need to pass the emissions from this to a property that accepts either number | undefined
. When connect it into the template though, it complains that it cannot accept null
:
<my-other-component indent="indentation$ | async">
<!--
Type 'number | null | undefined' is not
assignable to type 'number | undefined'
-->
</my-other-component>
The error goes away with a bang!
<my-other-component indent="(indentation$ | async)!">
</my-other-component>
Where is the null value coming from?
Why would the template think that indentation$ | async
might ever be null? It's not defined that way in the constructor so where's the gap in my understanding of how all this works?
Solution
From the async
pipe itself. The transform method's return type is T | null
. By inference, the type returned by your async
pipe is indeed number | undefined
(from your type declaration) | null
from the async
pipe.
Answered By - Octavian Mărculescu
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.