加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – ngOnChanges在输入属性更改时不触发

发布时间:2020-12-17 08:51:58 所属栏目:安全 来源:网络整理
导读:你是否可以在angular2中改变组件属性时以编程方式触发角度变化检测? @Component({ selector: 'my-component',})class MyComponent implements OnChanges { @Input() message: string; ngOnChanges(changeRecord) { for (var change in changeRecord) { cons
你是否可以在angular2中改变组件属性时以编程方式触发角度变化检测?
@Component({
   selector: 'my-component',})
class MyComponent implements OnChanges {
   @Input() message: string;

   ngOnChanges(changeRecord) {
      for (var change in changeRecord) {
         console.log('changed: ' + change);
      }
   }

   doSomething() {
     // I want ngOnChanges to be called some time after I set the 
     // message. Currently it is only called if the host element
     // changes the value of [message] on the element.
     this.message = 'some important stuff';
   }
}
尝试手动调用更改检测或花费大量时间来解决此问题是过度的,为什么不创建一个函数来处理所需的变异并在ngOnChanges和doSomething中调用它?就像是:
@Component({
  selector: 'my-component',})
class MyComponent implements OnChanges {
  @Input() message: string;
  viewMessage: string;

  ngOnChanges(changes: { [propertyName: string]: SimpleChange }) {
    for (let propName in changes) {
      if (propName === 'message') {
        this.updateView(this.message);
      }
    }
  }

  doSomething() {
    this.viewMessage = 'some important stuff';
  }

  updateView(message: string) {
    this.viewMessage = message;
  }
}

因此,viewMessage将是您将使用的属性并控制模板.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读