【问题标题】:Is it possible to set *ngIf on host element?是否可以在主机元素上设置 *ngIf?
【发布时间】:2016-04-07 06:49:24
【问题描述】:

我想在每次更改局部变量时运行ngAfterViewInit()。我考虑过使用 *ngIf 来触发此功能,但是我不知道如何从组件本身进行设置。 HostBinding 不用说,不行。

这是我想要达到的目标的简化版:http://plnkr.co/edit/tflsWzsRDVNeMPjmTokF?p=preview

编辑:我之前的解释有点误导。 *ngIf 是必不可少的,因为如果组件的局部变量是 false,我根本不想显示组件。但是如果是true,我想把这个组件内部的div的宽度和高度传递给服务。

【问题讨论】:

  • 为什么要在每次更改局部变量时运行ngAfterViewInit()。似乎毫无意义。
  • @GünterZöchbauer 重点是将盒子的宽度和高度属性传递给服务,我只能在创建视图后才能做到。
  • 调用ngAfterViewInit() 并不能确保视图实际上已经创建。只有在 Angular 调用 ngAfterViewInit() 之后,您才能确定视图已初始化。

标签: typescript angular


【解决方案1】:

您可以将变量更改为 getter/setter 并在每次调用 setter 时调用 ngAfterViewInit() 或任何其他方法(并且新值与旧值不同)?

  private _show: boolean = false;

  get show():Boolean {
    return this._show;
  }
  set show(newVal:Boolean) {
    if(newVal != this._show) {
      this._show = newVal;  
      ngAfterViewInit();;
    }
  }

  ngAfterViewInit() {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多