我正在使用Angular 4和CLI创建一个Angular应用程序 . 我正在尝试将SkyScanner搜索小部件添加到我的一个组件中 .
部分实现需要添加新的外部脚本:
<script src="https://widgets.skyscanner.net/widget-server/js/loader.js" async></script>
我不确定引用此文件的正确方法 . 如果我将脚本添加到index.html文件中,除非执行整页刷新,否则不会加载窗口小部件 . 我假设脚本尝试在加载时操作DOM,并且脚本运行时元素不存在 .
仅在加载包含Skyscanner窗口小部件的组件时加载脚本的正确方法是什么?
7 回答
你可以做一件事
如果你有angular-cli.json
然后你可以声明脚本
喜欢
然后在组件中声明skyscanner
喜欢
而已!
希望这对你有所帮助
我已完成此代码段
然后像这样称呼它
EDIT: 使用新的渲染器Api,它可以像这样写
StackBlitz
注意:这是专门用于外部js链接!步骤1.建议您将角度脚本添加到身体底部的index.html文件中!我尝试了所有其他方法但失败了 .
接下来有两种方法可以执行此操作...在Anguar5中,在此代码中的顶部类型的组件文件夹中使用
然后在你的课堂内调用你需要的方法 . 例如
这应该运行你的代码!另一种可能适用于旧版本的方式 . 我没有检查过!
如果你没有得到我的代码,那么也尝试这个link .
希望这可以帮助!
将
loader.js
添加到您的资源文件夹,然后添加到angular-cli.json
然后将其添加到
typings.d.ts
你就可以使用它了
我有同样的问题,但在我的情况下,我在html文件的末尾导入10个库,这些库有很多方法,听众,事件等等,在我的情况下我不需要专门调用一个方法 .
关于我拥有的例子:
如上所述,它没有用 . 然后,我找到帮助我的东西:Milad response
删除app.component.html中的脚本调用 . 您必须在app.component.ts文件中链接这些脚本 .
在ngOnInit()中,使用方法追加库,例如:
``
它对我有用 . 我使用Angular 6,希望它有所帮助 .
尝试在组件加载上加载外部JavaScript,如下所示:
您可以创建自己的 directive 来加载脚本,如下所示
您可以在组件模板中的任何位置使用它,如下所示
例如,要在组件中动态加载JQuery,请在组件的模板中插入下面的代码