加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – @ViewChild始终返回undefined

发布时间:2020-12-17 07:23:26 所属栏目:安全 来源:网络整理
导读:我知道之前已经问过这个问题,但所选择的答案都不适用于我. 我正在尝试使用@ViewChild从dom中获取我的ng-select.它总是返回undefined 这是main.html里面的选择 ng-select id="user-select" #userSelect [allowClear]="true" [items]="singleSignOnUsers" [dis
我知道之前已经问过这个问题,但所选择的答案都不适用于我.

我正在尝试使用@ViewChild从dom中获取我的ng-select.它总是返回undefined

这是main.html里面的选择

<ng-select id="user-select" 
             #userSelect 
             [allowClear]="true"
             [items]="singleSignOnUsers"
             [disabled]="disabled"
             placeholder="No user selected">
            </ng-select>

这是我的组件

import { Component,AfterViewInit,ViewChild  } from '@angular/core';

@Component({
    moduleId: module.id,selector: 'app-main',templateUrl: '../app/main.html',providers: [ApiHttpService,UserAdministrationService]
})

export class AppComponent {
      @ViewChild('userSelect') userSelect;


        ngAfterViewInit() {
           alert(this.userSelect);
        }
}

我在这里失踪了什么?

更新:哦,我的灵魂!
我想出了为什么这应该不起作用.
我将整个视图包含在带有ngSwitch的div中.如果我把它移出……我可以访问它们.现在我不知道如何在ngSwitch中访问它们.但我不必使用ngSwitch

<div [ngSwitch]='loading'>
        <div *ngSwitchCase="false">
            ...
            <ng-select id="user-select"
                       #userSelect
                       [allowClear]="true"
                       [items]="singleSignOnUsers"
                       [disabled]="disabled"
                       placeholder="No city selected">
            </ng-select>
            ...
        </div>
    <div
@twaldron你在ngOnInit中使用了一些延迟数据加载吗?

因为在这种情况下,根据我的经验,将@ViewChild作为ElementRef读取不会产生任何结果

如果你的组件已经解析了数据(比如父项将子数据对象传递给子组件的情况),它应该可以工作(至少对我而言).

在异步数据加载的情况下,我能够使其工作的方式是使用更改通知

@ViewChildren('userSelect') userSelect: QueryList<ElementRef>;

 ngAfterViewInit(): void {
    this.userSelect.changes.subscribe(item => {
        if (this.userSelect.length) {
            alert(this.userSelect.first.nativeElment.outerHTML)
        }
    })
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读