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

angular 2获取Angular 2中的元素以用于Material design lite

发布时间:2020-12-17 17:39:23 所属栏目:安全 来源:网络整理
导读:我想在Angular 2中使用 Material Design Lite snackbar. 我试图在我的模板中抓住Element,如下所示: 我的模板 test div id="child1" child1 div id="child2" div id="child2" child2 div id="child2" div id="toast_error" Error message /div /div /div /di
我想在Angular 2中使用 Material Design Lite snackbar.

我试图在我的模板中抓住Element,如下所示:

我的模板

<test>
     <div id="child1"> child1 <div id="child2">
      <div id="child2"> child2 <div id="child2">
       <div id="toast_error"> Error message </div>
      </div>
     </div>
    </div>
</test>

在我的组件文件中

constructor(private el:ElementRef){}

ngOnInit(){
        this.show_error("something");
    }
show_error(err){
        var snackbarContainer = this.el.nativeElement.querySelector("#toast_error")
        var data = {
            message: 'Button color changed.',timeout: 2000,actionText: 'Undo'
        };

        snackbarContainer.MaterialSnackbar.showSnackbar(data);
    }

我收到了以下错误消息.如何获取id为toast_error的元素

EXCEPTION: TypeError: Cannot read property 'MaterialSnackbar' of null in [null]

PS:我已经检查过this.el.nativeElement确实给了我正确的参考

编辑

根据答案和评论,我现在可以通过在ngAfterViewInit中使用相同的代码来获取元素.但是,我无法让小吃店工作.以下是更新的代码.

在我的组件文件中

constructor(private el:ElementRef){}


    ngAfterViewInit(){
            var snackbarContainer = this.el.nativeElement.querySelector("#toast_error")
            var data = {
                message: 'Button color changed.',actionText: 'Undo'
            };

            console.log(snackbarContainer.MaterialSnackbar); //prints undefined
            //snackbarContainer.MaterialSnackbar.showSnackbar(data);
        }

console.log()命令打印undefined.我确保加载了material.min.js并检查了文件,它确实包含了MaterialSnackbar.我该怎么调试呢?

解决方法

我通过将代码放在ngAfterViewInit()中并同时调用upgradeElement来解决问题,如下所示:

constructor(private el:ElementRef){} 

ngAfterViewInit(){
    window.componentHandler.upgradeAllRegistered();
    var snackbarContainer =         this.el.nativeElement.querySelector("#toast_error")
                    var data = {
                        message: 'Button color changed.',actionText: 'Undo'
                    };                           
    snackbarContainer.MaterialSnackbar.showSnackbar(data);
                    }

(编辑:李大同)

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

    推荐文章
      热点阅读