gpt4 book ai didi

angular - 在另一个管道中注入(inject) AsyncPipe

转载 作者:行者123 更新时间:2023-12-02 12:46:34 26 4
gpt4 key购买 nike

用例:我定义了 CustomError像这样:

interface {
message?: string;
i18nMessage?: string;
}

我定义了 DisplayErrorPipe显示错误。如果message被定义,管道返回它。否则,如果i18nMessage定义后,管道返回 Observable<string> (这将发出翻译后的错误)。

所以管道应该这样使用:

{{ customError | displayError }}

DisplayErrorPipe可能会返回一个 Observable 但我想避免必须通过管道 async每次

{{ customError | displayError | async }}

因此,我需要注入(inject)AsyncPipeDisplayErrorPipe这样我就可以自动管道 async当管道返回Observable<string>时.

所以我尝试了:

constructor(private asyncPipe: AsyncPipe) {}

但我收到错误:

NullInjectorError: No provider for AsyncPipe!

我找不到应该导入哪个模块才能注入(inject)AsyncPipe .

到目前为止,我唯一的解决方案是:

constructor(private _ref: ChangeDetectorRef) {
const asyncPipe = new AsyncPipe(_ref);
}

这可以工作,但如果 AsyncPipe 的构造函数发生更改,则可能会中断。

问题:如何正确注入(inject)AsyncPipe

最佳答案

您只需在声明组件的模块中将 AsyncPipe 注册为提供者即可。我认为 Angular 默认情况下不会在 DI 系统中将它们注册为服务。

关于angular - 在另一个管道中注入(inject) AsyncPipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com