我正在寻找使用异步值处理HostBinding的最佳方法.
在Angular v2.1.2之前,我可以host在@Directive装饰器中使用这样的属性:
@Directive({
selector: 'img[my-directive]',
host : {
'[alt]' : "alt | async"
}
})
export class MyDirective {
alt: Observable<string>;
}
Run Code Online (Sandbox Code Playgroud)
但看起来这不是预期的行为,因为版本2.1.2修复了它.请参阅不访问视图局部变量或主机表达式中的管道.
现在,在使用AoT编译进行编译时,我得到了Parser Error: Host binding expression cannot contain pipes in Directive.
San*_*r_P 10
Tobias Bosch(Angular团队成员)写道:
组件("子")的主机绑定在使用该组件("父")的组件中执行.父组件可以属于不同的NgModule.因此,如果使用管道,则管道将针对父组件的NgModule进行解析.但是,如果NgModule未声明您正在使用的管道,则组件已损坏.
这就是我们从未希望在主机绑定中使用管道的原因.在2.0 final之前的一个较大的编译器重构之后,我们不小心重新引入了它,但这是一个bug,而不是一个特性,因为语义是错误的.
资源: