【发布时间】:2019-04-03 08:58:31
【问题描述】:
我正在尝试使用 Renderer.selectRootElement 从我的组件中获取一些元素,如 here 所述。
一切正常,除非我只选择一个元素 (plnkr)。
如你所见,我已经创建了一个组件:
export class ExampleComponent implements OnInit{
@Input() start: any;
@Input() end: any;
constructor(public _renderer:Renderer){
};
ngOnChanges(){
}
ngOnInit(){
console.log("NG ON CHAN START DATE",this.start);
console.log("NG ON INIT END DATE",this.end);
var container = this._renderer.selectRootElement('.container');
console.log(container);
var inner1 = this._renderer.selectRootElement('.inner1');
console.log(inner1);
var inner2 = this._renderer.selectRootElement('.inner2');
console.log(inner2);
}
}
当我尝试运行此程序时,出现以下错误:
例外:选择器“.inner1”与 [{{exampleData.end}} in MainViewComponent@3:65] 中的任何元素都不匹配]
(但是,在我的应用中,当只找到第一个容器时,就找不到其他容器了)。
你有什么想法吗?
更新
我发现该指令没有被完全调用 - 只有类 container 的 div 被添加到 HTML。
【问题讨论】:
-
我不知道确切的问题是什么.. 但是你仍然可以使用
BroswerDomAdapter似乎对DOM操作很有好处,而且它由 DOM Api 提供动力:-)。 -
我不知道究竟是什么原因造成的,但你可以插入一个零超时,然后它按预期工作:plnkr.co/edit/MKLf6EWGa9xvjKUJDW2q?p=preview
-
@micronyks,是否有关于 BrowserDomAdapter 的任何文档?有 0 个谷歌结果大声笑
-
是的,文档不可用。但如果你熟悉 javascript DOM api,那么你可以将它与 BroswerDomAdapter 一起使用。
标签: angular