jquery - 在 Angular 2 组件中选择模板元素并传递给 jQuery

标签 jquery angular typescript

我正在尝试弄清楚如何将 jQuery 与 Angular 2 一起使用。我一直在尝试遵循下面的示例,其中提到 Angular 应该控制 DOM,并且我应该将元素传递给 jQuery。

https://stackoverflow.com/a/30662773/657477

我想我不明白@ViewChild()是如何工作的。

我的组件模板中有一个 div:

<div id="screenshot">
 // ... content here
</div>

所以我将 jQuery 声明为 any:

declare var $:any;

添加此属性:

@ViewChild('screenshot') el:ElementRef;

然后要测试一下,只需尝试在 ngAfterViewInit() 中调用 hide 即可:

ngAfterViewInit() {
    $(this.el.nativeElement).hide();
}

这会引发异常:

Cannot read property 'nativeElement' of undefined

所以我的 View 查询没有找到该元素?我检查了 @ViewChild 的文档,它似乎采用嵌套组件作为参数。我想我肯定做错了什么。

我希望能够在组件中使用 jQuery 进行各种工作,因此我需要能够使用选择器然后调用 jquery 方法。

我使用了错误的方法吗?我应该如何将元素传递给 jQuery?

最佳答案

需要进行如下所示的小更改,

<div #screenshot>          //replaced id="screenshot" by #screenshot
   // ... content here
</div>

@ViewChild('screenshot') el:ElementRef;

关于jquery - 在 Angular 2 组件中选择模板元素并传递给 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42919161/

相关文章:

javascript - 如何将值从兄弟组件传递到 Angular 6 中的路由器导出?

typescript - 如何让 Typescript 理解如果值为空则抛出的函数调用后值不能为空

jQuery 模式对话框按钮文本

javascript - 将随机数插入到类中

Angular rxjs Observable.interval() 无法在 Chrome 中的后台选项卡上正确触发

node.js - 将现有 Node 服务器与 Angular Universal 服务器代码合并

javascript - 如何使用 jQuery 检查输入字符串中的大写字母

javascript - 使用ajax javascript提交表单数据

angular - 如果 FormArray 在响应式表单中为空或未定义,则不显示它

typescript - 如何将 Global 注入(inject) typescript 进行测试?