angular - 角度 10 - 在其他组件中加载组件
问题描述
在 AngularJS 中,可以在模板中使用 $compile 加载组件。
我尝试像这样使用 Angular 10 做到这一点:
import {AfterViewInit, Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef, ComponentRef} from '@angular/core';
import { LoginFormComponent } from '../../component/login-form/login-form.component';
@Component({
selector: 'app-on-boarding',
templateUrl: './on-boarding.component.html',
styleUrls: ['./on-boarding.component.sass']
})
export class OnBoardingComponent implements OnInit, AfterViewInit {
@ViewChild('container', {read: ViewContainerRef}) target: ViewContainerRef;
private readonly componentFactoryResolver: ComponentFactoryResolver;
constructor(componentFactoryResolver: ComponentFactoryResolver) {
this.componentFactoryResolver = componentFactoryResolver;
}
ngAfterViewInit(): void {
const factory = this.componentFactoryResolver.resolveComponentFactory(LoginFormComponent);
const component = this.target.createComponent(factory);
console.log(factory);
console.log(component);
}
ngOnInit(): void {
}
}
模板'./on-boarding.component.html':
<div #container></div>
但什么也没有发生。没有错误,#container 中没有组件加载。
解决方案
用它来解决孩子#container
只是一半的工作。您需要正确包含您的子组件。如果您的孩子看起来接近这个:
@Component({
selector: 'app-container',
...
})
那么你父母的模板应该是这样的:
<app-container #container></app-container>
推荐阅读
- arduino - 使用 websockets 拥有自己的物联网平台
- pine-script - 进行逆向研究
- python - super().__init__(self,name,age,gender,address) TypeError: __init__() 接受 5 个位置参数,但给出了 6 个
- python - 我可以从谷歌表运行一个 docker 容器吗?
- ios - Swift 包解析失败:二进制目标的工件下载失败:无效状态码 401
- java - 如何检查我在字符串中查找的单词的前一个字母是否存在?递归
- python - 在openCV python中按位和发送错误
- c++ - 标题中不允许使用全局变量?
- bash - 我们如何从 txt 文件中读取数据并在我的 Bash 代码中使用该数据?这不是关于比较字符串
- php - 博客的数据库新网址:post/post_name