I have the following statement in my template in my table
<span>
{{ row[columns[1].field] | async | beautifyMyString}}
</span>
Where as beautifyMyString
accepts string | number | undefiend
.
row[columns[1].field]
on the other hand should be an Observable<string>
. However, angular state out, that the async pipe will return Observable<unknown>
. I guess this is because its not clear what the generic field
is containing. But even if Im doing something like this:
{{ asStringObservable(row[columns[1].field]) | async | beautifyMyString}}
where as
asStringObservable(observable: any): Observable<string> {
return observable as Observable<string>;
}
Angular prints
Argument of type 'string | null' is not assignable to parameter of type 'string | number | undefined'.
I guess, I have to narrow the field-content before pass its content to the async pipe.
How can I do that?
CodePudding user response:
1st step: make your pipe accept null, because async pipe can return null sometimes when there is no value yet.
2nd: your colums should contain something more complex than string
in a field
field
interface Column<T> {
field: keyof T;
}
and
columns: Column<TableRowModel> = ...
this way typings will be correctly inferred