有什么区别"激活"和" ngOnInit"?

时间:2016-05-26 18:36:49

标签: typescript angular

我在Angular 2 Style Guide中看到了这个示例。

如果我这样做,我会在this.show();中致电ngOnInit,而演示会在activate中调用它。

activatengOnInit之间有什么区别?感谢

export class ToastComponent implements OnInit {
  // public properties
  message: string;
  title: string;

  // private fields
  private defaults = {
    title: '',
    message: 'May the Force be with You'
  };
  private toastElement: any;

  // public methods
  activate(message = this.defaults.message, title = this.defaults.title) {
    this.title = title;
    this.message = message;
    this.show();
  }
  ngOnInit() {
    this.toastElement = document.getElementById('toh-toast');
  }

  // private methods
  private hide() {
    this.toastElement.style.opacity = 0;
    window.setTimeout(() => this.toastElement.style.zIndex = 0, 400);
  }
  private show() {
    console.log(this.message);
    this.toastElement.style.opacity = 1;
    this.toastElement.style.zIndex = 9999;
    window.setTimeout(() => this.hide(), 2500);
  }
}

1 个答案:

答案 0 :(得分:2)

ngOnInit()是一个Angular生命周期方法,在第一次更新输入(第一次ngOnChanges()之后)后调用。 activate只是一种自定义方法,而不是由Angular调用。要使用它需要通过自定义代码调用。