簡體   English   中英

角DOM元素未顯示

[英]Angular DOM elements are not showing

嗨,我正在使用UI庫(強制發布到公司。),該庫提供了一個Angular組件,該組件呈現了一個表單。

現在,我想禁用此表單內的所有輸入字段和按鈕。 但是庫的組件無法為我提供傳遞參數以將狀態更改為只讀的可能性。

現在,我沒有其他選擇可以進行骯臟的DOM黑客了。 但是,它似乎不起作用。

這是我自己的組件的HTML,在其中渲染庫組件:

<component-of-the-library #formComponent></component-of-the-library>

現在在我自己的組件類中引用它:

@ViewChild('formComponent', {read: ElementRef}) formComponent: ElementRef;

但是,當我使用nativeElement功能和querySelectorAll()函數時,我看不到按鈕元素:

ngAfterViewInit() {                
  console.log(this.formComponent.nativeElement);
 console.log(this.formComponent.nativeElement.querySelectorAll('button'))
}

第一行輸出庫組件的DOM。 在那里,我也看到了按鈕。

但是第二行只返回一個空的NodeList。

我想念什么嗎?

除了完成所有這些操作之外,還可以使用div覆蓋圖和表單大小,然后根據需要顯示或隱藏它。 這比禁用每個表單輸入和按鈕要容易。 另外,疊加層不是組件,而是您的div。

我能夠使用ViewChild()從父組件讀取子組件中存在的DOM節點https://stackblitz.com/edit/angular-edmyur?file=src%2Fapp%2Fapp.component.ts

編輯:我看到另一個問題。 AfterViewChecked被多次調用...

我自己找到了答案。 問題是LifeCycleHook。 AfterViewInit適用於您自己的組件,但不等待子組件完成渲染。

當我使用AfterViewChecked時,它可以工作!

但是,我仍然感到困惑,盡管記錄nativeElement始終沒有提供正確的DOM,但始終為我提供了正確的DOM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM