如何获取Angular中viewChild的innerHTML的值?

How to get the value of the innerHTML of a viewChild in Angular?

我需要 Angular 中的 viewChild 的值来检查它是否为空字符串。

我的 ViewChild 看起来像这样:

@ViewChild('myItem', { static: true }) myItem: ElementRef;

我得到这样的值:

console.log('itemType', this.myItem.nativeElement.firstChild); // returns "TESTSTRING"

在控制台中,值如下所示:“TESTSTRING”是一个字符串,但如果我检查 typeof,它说它是一个对象:

console.log('itemType', typeof this.myItem.nativeElement.firstChild); // returns object

我想这样检查:

this.myItemIsEmpty = this.myItem.nativeElement.firstChild === ''; // returns always false

我做错了什么?

以下部分 this.myItem.nativeElement.firstChild returns 类型为 ChildNode 的元素 - 表示 DOM 元素。要获取其中的文本,您需要使用 textContent 属性.

@Component({/* ...*/})
export class MyComponent implements AfterViewInit {
   @ViewChild('myItem', { static: true }) myItem: ElementRef;

   // Only try to access @ViewChild/@ContentChild in/after AfterViewInit as DOM might not be rendered otherwise
   public ngAfterViewInit():void {
      this.myItemIsEmpty = this.myItem.nativeElement.firstChild.textContent === '';
   }
}