Angular - 在内部导航上通过 CDN 加载外部脚本

Angular - Loading external script through CDN on internal navigation

我正在尝试通过在 <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script> 中加载来创建砌体布局 在索引页面的顶部,并在我的 web-app 中的组件上使用它。 这个问题可能不是 masonry-specific,一般问题是 header 中包含的脚本未在内部导航中加载。

我选择在 HTML 中初始化砌体。使用内部导航访问页面时会出现问题。如果我将页面重新加载到正确的 URL,脚本就会执行它的操作并创建所需的布局。但是,当通过 routerlinks 导航时,脚本不会加载,或者其他错误导致它不适用。

这是刷新页面时正确加载的图片:

以及在内部导航到页面时的错误加载之一:

HTML 页面:

<div class="grid" data-masonry='{ "itemSelector": ".grid-item", "columnWidth": 5 }'>
  <div *ngFor="let card_text of card_array" class="grid-item">
    <div class="cardTop">
      <img src="/static/images/ordercards/greenOrderIcon.svg">
      <div class="orderId">
        Order # Some number
      </div>
    </div>
    <div class="cardMain">
      {{ card_text }}
    </div>
    <div class="cardBot">
      <a routerLink="/orders"> Learn More ></a>
    </div>
  </div>
</div>

并且在 index.html 中包含了顶部提到的脚本。

关于每次内部导航页面时如何加载脚本的任何想法?

如果在内部导航期间,您正在调用任何组件并在那里编写了任何逻辑,那么您还需要将该脚本导入该组件。

我使用了很多外部脚本,我的项目运行良好。

下面是您可能需要导入脚本的示例代码行。

import * as utility from 'assets/js/core/utility.js';  

这也会在组件中加载脚本。

您的 angular 脚本可能 运行 在加载 mansory js 之前。 尝试使用 load-script 或 load-js 脚本加载库,这会给你一个加载完成的承诺,然后你执行你的 mansory 布局构造函数。

我特别建议您在加载所有其他页面项目时加载砌体布局脚本。这意味着您应该将其添加到索引页的底部。