是否有新的@Input到组件的事件?

时间:2016-07-29 06:12:56

标签: angular

如果您想知道我为什么需要这个:

我有一个显示手机通讯录的组件。它获得了应该呈现其联系人的帐户。

为了在该组件内部实现搜索,我应该(如果我错了,请找我)制作一个包含所有联系人并过滤他的第二个数组。 为此,我需要知道新帐户何时进入组件并在每次访问时更改新数组以进行搜索。

如果有更聪明的方法来实现搜索和过滤,我想听听。但无论如何我想知道如何知道何时有新的输入。

我想有这样的事情:

export class ContactTable
{
  @Input(newAccountCame) account:Account;
  private newAccountCame()
  {
     //do something with this.account.
  }
  ...
}

1 个答案:

答案 0 :(得分:2)

您可以使用ngOnChanges回调

  ngOnChanges(changes: SimpleChanges) {
    console.log('ngOnChanges - account = ' + changes['account'].currentValue);
  }

或者你可以让account成为一个二传手

  private _account:Account;
  @Input() 
  private set newAccountCame(value)
  {
     this._account = value;
     //do something with this.account.
  }

您应该知道,如果仅从先前传入的数组中添加/删除值,则这些都不起作用。仅当传递了不同的数组时,更改检测才会识别它并调用方法或设置器。 / p>

如果您需要处理此案例,请使用ngDoCheck