select器“my-app”与任何元素都不匹配

问题是当我运行我的应用程序,它工作正常。 但是,当我刷新它,大部分时间我得到下面的味精。

select器“my-app”与任何元素都不匹配

但奇怪的是,当我刷新我的应用程序很多次,它也可以。

所以最终我有一个奇怪的行为,我的应用程序,无法弄清楚这一点。
有时候它有时候不会…

任何build议,不能拿出代码?

注:我没有复杂的结构或组件,但实现简单。

这发生在我身上,因为我是在head标记中导入我的代码,所以它可能正在运行,并在DOM准备好之前尝试引导。

您可以将脚本移动到body标记的底部,也可以将引导程序代码放入事件侦听器中:

 document.addEventListener("DOMContentLoaded", function(event) { bootstrap(AppComponent); }); 

要么:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Example app</title> </head> <body> <my-app></my-app> </body> <script src="main.js" charset="utf-8"></script> </html> 

Angular 4:我必须在index.html文件中用<my-app></my-app>更改<app-root></app-root>

当我使用Angular Universal时,我遇到了同样的问题。 但这是因为我在main.node.ts中使用BrowserModule ,解决scheme是

  imports: [ UniversalModule, BrowserModule // <- delete this will solve the issue ], 

并检查这里更多的信息: https : //github.com/angular/universal/issues/542

如果您从这里使用angular2 / asp.net核心模板: http : //blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/您可能会发现replace最后几行boot-client.ts与以下帮助(并避免了HMR重新加载页面时,很多可怕的控制台错误):

 const bootApplication = () => { platform.bootstrapModule(AppModule); }; if (document.readyState === 'complete') { window.onload = () => bootApplication(); location.reload(); } else { document.addEventListener('DOMContentLoaded', bootApplication); } 

要做的事情:

  1. app.module.ts (主模块,在大多数情况下,这是一个名字)
  2. 检查你是否有部分“ boostrap :” – 如果没有添加:

    bootstrap: [AppComponent] //其中AppComponent是您的主要组件

  3. 检查它是否现在工作,如果没有 – 去AppComponent并检查您的select器 。 它应该和index.html中的标签一样

所以index.html应该包含这样的东西:

 <body> <app-root>Loading...</app-root> </body> 

而不是<app-root> ,而应该使用主AppComponent中的select器

  1. 如果你在外部网站上使用你的angular度应用程序,那么你应该考虑在angular文件的头文件中使用延迟

也许你可以用这个

延缓

在你的头文件中标记js文件。

http://www.w3schools.com/TAgs/att_script_defer.asp