我想创建具有Router和RouterModule之外的视图层次结构的组件
示例:
comp-parent.ts
@Component({
selector: 'comp-parent',
template: `
<p>parent works</p>
<router-outlet></router-outlet>
`,
styleUrls: ['./comp-parent.css']
})
export class ComponentParent {
protected foo: string;
}
comp-children.ts
@Component({
selector: 'comp-children',
template: "<p>Children works</p>",
styleUrls: ['./comp-children.css']
})
export class ComponentChildren extends ComponentParent { }
component-foo-bar.ts
@Component({
selector: 'component-foo-bar',
template: "<comp-children></comp-children>",
styleUrls: ['./component-bar.css']
})
export class ComponentFooBar { }
在ComponentBar
中,我希望comp-children
将是comp-parent
,其中包含comp-children
,但是仅加载comp-children
模板。
如何使用已解析为<router-outlet/>
模板的comp-children
加载父模板?
答案 0 :(得分:0)
只需更换
@Component({
selector: 'component-foo-bar',
template: "<comp-children>",
styleUrls: ['./component-bar.css']
})
export class ComponentFooBar { }
使用
@Component({
selector: 'component-foo-bar',
template: "<comp-children></comp-children>",
styleUrls: ['./component-bar.css']
})
export class ComponentFooBar { }
答案 1 :(得分:0)
继承类时,只能使用基类的逻辑,而不能使用其模板。
实际上,您尚未在父组件中使用子组件。 (我的意思是在父组件模板中使用子组件选择器)
因此它们实际上不是父级和子级,它们只是基类和派生类
答案 2 :(得分:0)
如果要建立这样的层次结构,则不需要使用router-outlet
或继承。只需直接使用组件(通过选择器)即可。请参见StackBlitz演示。