我对 Angular2 非常陌生,我还没有找到解决我想要做的事情的方法。我将尝试用以下示例进行解释。
我们假设我们有一个父组件 A ,它可以包含子组件 X 或 Y 。 这可以通过viewchild轻松解决。
但是,如果我们想要动态加载子组件而没有代码重复会怎样?
真实示例:
目标是轻松更改容器,自动更改所有视图。
必须有办法做到这一点,我无法为这种需求找到一个良好而干净的解决方案。 任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您可以使用Angular2 Component Router:
(注意:为简单起见,我没有添加输入元素,而是使用a
元素。虽然调用一个函数来告诉路由器将加载的组件插入{{1 }})
app.component.ts
<router-outlet>
app.routing.ts
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'my-app',
template: `
<div>
<!-- to show how the function can be called -->
<a href="#" (click)="load('/page1')">Page 1</a>
<!-- Right way with links -->
<a href="#" routerLink="/page1">Page 1</a>
<router-outlet></router-outlet>
</div>
`
})
export class AppComponent {
constructor(private router: Router)
load(path: string): void {
this.router.navigate([path]);
}
}
app.module.ts
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const appRoutes: Routes = [
{
path: "page1",
component: "PageOneComponent"
}
];
export const appRoutingProviders: any[] = [
];
export const appRouting: ModuleWithProviders = RouterModule.forRoot(appRoutes);
干杯!