问题是当我运行我的应用程序时,它运行正常。但是当我刷新它时,大部分时间我都低于msg。
选择器" my-app"与任何元素都不匹配
但奇怪的是,很多时候,当我刷新我的应用程序时,它也有效。
所以最终我的应用程序有一个奇怪的行为,无法解决这个问题。
有时它的工作原理有时并不......
任何建议,都不能提出代码???
注意:我没有复杂的结构或组件,但实施简单。
答案 0 :(得分:89)
这件事发生在我身上,因为我在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>
答案 1 :(得分:54)
Angular 4:我必须在index.html文件中使用<app-root></app-root>
更改<my-app></my-app>
答案 2 :(得分:22)
要做的事情:
检查您是否有部分&#34; boostrap :&#34; - 如果没有添加:
bootstrap: [AppComponent]
// AppComponent是您的主要组件
检查现在是否有效 - 如果没有 - 转到AppComponent并检查您的选择器。它应该
所以index.html应该包含这样的内容:
<body>
<app-root>Loading...</app-root>
</body>
而不是<app-root>
,你应该使用主AppComponent的选择器
答案 3 :(得分:6)
当我使用Angular Universal时,我遇到了同样的问题。但这是因为我在 main.node.ts 中使用BrowserModule
,解决方案是
imports: [
UniversalModule,
BrowserModule // <- delete this will solve the issue
],
答案 4 :(得分:5)
如果您使用的是angular2 / asp.net核心模板:http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/您可能会发现使用以下帮助替换boot-client.ts的最后几行(并避免使用很多可怕的控制台) HMR重新加载页面时的错误):
const bootApplication = () => { platform.bootstrapModule(AppModule); };
if (document.readyState === 'complete') {
window.onload = () => bootApplication();
location.reload();
} else {
document.addEventListener('DOMContentLoaded', bootApplication);
}
答案 5 :(得分:2)
答案 6 :(得分:2)
当我将引导程序组件从AppComponent
更改为新组件时,这发生在我身上。更改时,还需要在主index.html
中进行更改。 index.html
应该包含引导程序组件。
例如,如果您在引导程序部分的app-component
中将app-login
更改为app.module.ts
,则应像这样更新index.html
<body>
<app-login></app-login>
</body>
答案 7 :(得分:1)
我将Angular 5.2应用程序更新为Angular 6.1,并遇到类似问题。在这种情况下,问题是 index.html 文件根本没有<body>
。相反,它包含在my-app
组件中。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<my-app></my-app>
</html>
这曾经与Angular 5.2(以及更早的版本)一起使用,因为在生成的 index.html 中,脚本标记位于末尾。升级到6.1之后,脚本标签改为放置在文件的开头(因此我假设在实际存在<my-app></my-app>
根元素之前执行脚本标签。
解决方案是将<body>
移到 index.html 中。 (它最初放置在组件中是因为有人想使用ngClass
将条件类应用于body元素。)
答案 8 :(得分:1)
以上所有答案均未解决我的问题。这是解决同类错误的方法。 作为Bootstarp组件,您不应该有多个组件。因此,Bootstrap阵列应该只有一个组件。由于错误,我将4个组件放入了Bootstrap数组中,我从那里删除了这4个组件并放入entryComponents数组中(如下面的代码)。这对我有所帮助。
@NgModule({
declarations: [
AppComponent,
SanackBarBodyComponent,
SuccessNavBarComponent,
AlertNavBarComponent,
NormalNavBarComponent
],
entryComponents:[
SanackBarBodyComponent,
SuccessNavBarComponent,
AlertNavBarComponent,
NormalNavBarComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule
],
providers: [],
bootstrap: [AppComponent
]
})
export class AppModule { }
答案 9 :(得分:1)
当我创建新组件时,需要按照以下步骤解决以下问题。
第1步,使用ng g c lakshya
创建新的组件。
步骤2-在使用4个文件创建的应用程序lakshya folfer下。
步骤3- Index.html需要<app-root></app-root>
至<app-lakshya></app-lakshya>
步骤4-将app.Module.ts文件更改引导程序:[AppComponent]更改为引导程序:[LakshyaComponent]
因此上述错误得以解决。
答案 10 :(得分:0)
Django + Angular
我有一个自定义index.html,而不是由角度CLI生成的。
出现此错误是因为我将生成的脚本文件放置在<head>
部分中,而不是放在结束的</body>
标签末尾(在<app-root></app-root>
标签之后)
答案 11 :(得分:0)
在app.module.ts中,如果引导中包含my-app,请对其进行注释或删除。
引导程序:[ AppComponent, //我的应用 ]
答案 12 :(得分:0)
就我而言,index.html 中 ' 所在的文件有问题(大多数情况下是根文件夹)。
修复后,一切正常。
答案 13 :(得分:0)
确保您使用了应用路由模块并且必须将选择器:“my-app”更改为“app-root”(文件:app.component.ts)