【问题标题】:Restart angular app after its html has been replaced替换 html 后重新启动 Angular 应用程序
【发布时间】:2017-05-31 12:49:32
【问题描述】:

所以我正在开发一个混合了 MVC 和 Angular2 的应用程序。

在我的索引页面上,我们有一个加载 Angular 应用程序的局部视图。索引页面还包含使 Angular 应用程序正常工作所需的所有其他 javascripts 链接。

这在第一次加载时一切正常,但是有一个异步调用再次调用此网格局部视图并将 Angular 应用程序替换为 <my-app>Loading...</my-app>

问题

在进行此异步调用并替换 html 后,javascript 中是否有办法重新加载/重新启动 Angular 应用程序?

索引(主视图)

<div>
    @Html.Partial("Grid")
</div>

网格(部分视图)

<my-app>Loading...</my-app>

如果我需要做更深入的解释,请告诉我。

编辑

我对 Angular 的有限了解表明,应该有一种方法可以重新运行在第一次加载时运行的 javascript。不是那么简单吗?只需再次运行 boot.js 或类似的东西?我的意思是&lt;my-app&gt; 标签已经存在了。

【问题讨论】:

    标签: javascript ajax asp.net-mvc angular


    【解决方案1】:

    这已经在GitHub issue 中得到了回答,但我认为它不再适用于 angular 4


    老实说,这有点棘手,但我的想法(我没有尝试过)是在模块引导级别上做同样的事情 在main.ts

    export var applicationRef;
    platformBrowserDynamic().bootstrapModule(AppModule).then((_appRef) => {applicationRef= _appRef}
    
    );
    

    然后您可以在applicationRef 上调用destroy(),然后再次引导应用程序以重新加载它。

    【讨论】:

    • 嗯,我如何在我的模块中获取applicationRef 变量?我尝试将其设为全局变量并作为共享服务,但均未全局公开该变量。
    • 你在变量前面加export关键字了吗?
    • 它说没有定义出口。但我现在先离开这个,这似乎不是一个简单的解决方案。不过感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2020-10-30
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多