Javascript 有没有办法确保Angular 2应用程序已加载?
因为我们有一个定制的SPL,所以我们不能在Javascript 有没有办法确保Angular 2应用程序已加载?,javascript,angular,Javascript,Angular,因为我们有一个定制的SPL,所以我们不能在标记中使用加载器,或者不管根组件的名称是什么 因此,与这个常见的数字不同: <app-root> <p>loading...</p> </app-root> 加载 我们有这个数字: <app-root></app-root> . . . <p>loading...</p> . . . 加载 现在我需要一种方法来隐藏,或者最好在Angular
标记中使用加载器,或者不管根组件的名称是什么
因此,与这个常见的数字不同:
<app-root>
<p>loading...</p>
</app-root>
加载
我们有这个数字:
<app-root></app-root>
.
.
.
<p>loading...</p>
.
.
.
加载
现在我需要一种方法来隐藏,或者最好在Angular完全加载后从DOM中删除加载。通过完全加载,我指的是Angular本身何时替换根组件的加载内容
我找不到办法。我该怎么办?怎么样
<p ngIf="isLoading">loading...</p>
我认为您应该看看哪个钩子最能处理您的情况(可能是AfterViewInit,AfterContentInit…)
否则,如果您只需要设置手动加载(如“等待http调用完成”),则应设置指示加载状态的布尔属性,如下所示:
public class AppComponent implements OnInit {
public isLoading = true;
ngOnInit(http: HttpClient) {
const vm = this;
vm.http.get('something').subscribe(response => {
vm.isLoading = false;
// handle success
}, error => {
vm.isLoading = false
// handle error
});
}
}
从第一个快速视图中,我们看不到您的
不在Angular组件中,所以您可能应该使用javascript来操作DOM(您通常可以从组件中执行)。我建议您将其移动到组件内部,除非您不能(仅将其作为ElementRef
或正常ngIf
指令处理)给您的
标记一个id并执行以下操作:
export class appComponent implements OnInit{
constructor(@Inject(DOCUMENT) private document: any) { }
ngOnInit(){
let p = this.document.getElementById("your<p>tagid");
//remove it now i think this is valid
// this.document.removeChild(p);
}
导出类appComponent实现OnInit{
构造函数(@Inject(DOCUMENT)private DOCUMENT:any){}
恩戈尼尼特(){
设p=this.document.getElementById(“您的tagid”);
//现在删除它,我认为这是有效的
//本文件为removeChild(p);
}
不受任何组件类的控制。它仍然可以读取Angular并与Angular交互吗?是的,很抱歉。在这种情况下,您可以运行一些javascript在ngOnInit函数中删除它
export class appComponent implements OnInit{
constructor(@Inject(DOCUMENT) private document: any) { }
ngOnInit(){
let p = this.document.getElementById("your<p>tagid");
//remove it now i think this is valid
// this.document.removeChild(p);
}