【问题标题】:Call a method when ng-template is visible当 ng-template 可见时调用方法
【发布时间】:2018-04-19 16:44:56
【问题描述】:

ng-template 在作用域中可见或活动时是否有任何事件 是否可以执行任何方法以从容器中调用它?

<ng-template (active/vissible)="callMethod()"> ... </ng-template>

(或)

<ng-container *ngTemplateOutlet="mytemplate" ></ng-container>

【问题讨论】:

  • 模板是否只在某个时候变得可见,还是它也从可见变为不可见?
  • 它只在某个时候可见它正在一个 ng-tabset 中使用
  • 这样的话,popStar给出的答案应该可以。

标签: angular ng-template


【解决方案1】:

一个选项可能是(对任何 DOM 对象有效)是通过 ViewChildren 的 QueryList 的changes。您标记任何 DOM 元素(或使用它的类型) - &lt;div #myEl&gt;&lt;/div&gt;

分配它:

@ViewChildren('myEl') myEl: QueryList&lt;any&gt;;

并订阅 ngAfterViewInit 中的更改(因为之前的 AFAIK 尚未创建):

ngAfterViewInit() {
  this.myEl.changes.subscribe(_ => console.log(_));
}

【讨论】:

  • 我不熟悉 ngTabset,但这应该适用于任何 DOM 元素
  • 除了生命周期钩子没有其他方法可以实现它
  • 很确定还有其他方法。为什么你不想要生命周期钩子?
【解决方案2】:

你可以使用

public mycondition: boolean = true;   ///according to need make it true or false

<ng-template *ngIf="mycondition"> ... </ng-template>

【讨论】:

  • 我可以从中调用方法吗? @Lavkush Gupta 我需要在模板可见时调用一个方法
  • 是的,因为你可以调用一个方法
  • 我不想使用 *ng 使视图可见/隐藏如果我需要它通知组件它是活动的或像事件一样可见
猜你喜欢
  • 2021-11-12
  • 2019-01-13
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
相关资源
最近更新 更多