【问题标题】:Angular2 directive is not responding to async dataAngular2 指令没有响应异步数据
【发布时间】:2017-02-01 23:52:20
【问题描述】:

我有一个组件可以接收和观察作为输入。

@Input() data: SubDayFoodVM;

使用异步管道从它的父级传递

<sub-day-food *ngIf="subDay" [data]="data | async"></sub-day-food>

SubDayFoodVM 接口上的一个属性是 foodName,它被传递给模板上的自定义指令。

<div ticker [text]="data.foodName" [size]="30"></div>

该指令创建一个元素,其中传递了[text]。如果文本比它的容器长,那么就会创建一个重复的元素,并且文本边距像新闻行情一样向左滑动。这是我不久前创建的原始版本:PLUNKR

在这个实现中,文本设置为onInit

ngOnInit(): void {
    // ... 
    this.firstNode = this.createTickerNode( this.text );
}

这导致当可观察数据更新时文本没有更新。触发ticker动作时,新创建的元素包含新值,但保留原始元素。

当异步数据发生变化时,如何更改我的实现以更新文本或重新呈现指令?

【问题讨论】:

    标签: angular asynchronous typescript observable angular2-directives


    【解决方案1】:

    你需要实现OnChange生命周期钩子。

    【讨论】:

    • 您的意思是在指令内更改文本还是在组件内重新加载指令?
    • 您希望指令在组件外部可用 - 所以在指令中。
    猜你喜欢
    • 2016-03-10
    • 2017-05-23
    • 1970-01-01
    • 2015-11-13
    • 2015-01-20
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多