Javascript 角度2-从DOM元素调用函数';s指令
我有一些用指令动态创建的元素。在某些情况下,我必须从元素的指令调用函数。如果我是静态创建这些元素的,我会在组件中使用Javascript 角度2-从DOM元素调用函数';s指令,javascript,html,angular,Javascript,Html,Angular,我有一些用指令动态创建的元素。在某些情况下,我必须从元素的指令调用函数。如果我是静态创建这些元素的,我会在组件中使用@ViewChild('myElement')myElement,类似于: <div #myelement myDirective>...</div> 。。。 在HTML中。然而,我无法做到这一点,因为我是动态创建这个元素的(我不知道这样的方法来动态地给出\myelement1,\myelement2,…标记)。我的想法是使用document.getEl
@ViewChild('myElement')myElement
,类似于:
<div #myelement myDirective>...</div>
。。。
在HTML中。然而,我无法做到这一点,因为我是动态创建这个元素的(我不知道这样的方法来动态地给出\myelement1
,\myelement2
,…标记)。我的想法是使用document.getElementById()
获取元素,但我无法从本机DOM元素访问该指令
您知道如何在不使用
@VievChild()
的情况下访问这些元素的指令吗?您可以这样做:
html:
ts:
从'@angular/core'导入{指令,输入};
@指示({
选择器:“[mask]”
})
导出类掩码{
@Input()掩码:字符串;
恩戈尼尼特(){
console.log(this.mask);
}
getMask(){
归还这个面具;
}
}
从'@angular/core'导入{Component,ViewChildren,QueryList};
//...
导出类AppComponent{
公共用户;
@ViewChildren(掩码)掩码:QueryList;
构造函数(){}
ngAfterViewInit(){
this.masks.forEach((mask)=>{
log(mask.getMask());
})
//对此不确定
this.masks.changes.subscribe((mask)=>{
log(mask.getMask());
})
}
}
您试图通过访问元素的指令来实现什么?我应该从该指令调用一个函数。它有一个我无法从外部改变的内在逻辑。这是有道理的,但是@ViewChildren(Mask)masks:QueryList如果进一步创建新元素,则每次代码>获取所有掩码
s?此.masks.changes
未定义,并且masks
仅选择一个指令,而不是全部指令。
<div mask="mask1"></div>
<div mask="mask2"></div>
import { Directive, Input} from '@angular/core';
@Directive({
selector: '[mask]'
})
export class Mask {
@Input() mask: string;
ngOnInit(){
console.log(this.mask);
}
getMask(){
return this.mask;
}
}
import { Component, ViewChildren,QueryList } from '@angular/core';
//...
export class AppComponent {
public user;
@ViewChildren(Mask) masks: QueryList<Mask>;
constructor( ){}
ngAfterViewInit(){
this.masks.forEach((mask)=>{
console.log(mask.getMask());
})
// not sure of this
this.masks.changes.subscribe((mask)=>{
console.log(mask.getMask());
})
}
}