Par*_*ain 10 angular2-template angular
我有一个组件有一个html和.ts文件.出于某些原因,我必须创建多个页面(HTML)页面.
是否可以为单个类(组件)创建多个(html)页面?
或者是否可以为组件提供动态TemplateUrl?
我的主要动机是提供不同的URL并使用不同的视图(HTML页面)但使用单个类(.ts类即组件)?
我已经看到下面提到的很多问题,但没有找到确切的解决方案 -
我想要这样的东西
{ path: '/Login', component: LogIn, name: "Login"},
{ path: '/Login2', component: LogIn, name: "Login" },
{ path: '/Login3', component: LogIn, name: "Login" }
Run Code Online (Sandbox Code Playgroud)
我想用不同的URL和视图加载相同的组件.
这可以通过继承来实现.不同的视图和样式模板,但(基本上)相同的底层组件代码.您仍然需要声明@Component元数据,因此如果您正在使用值访问器等,则还需要重新定义它们.
第一部分:
import { Component, Input, OnInit } from '@angular/core';
import { KeyValuePairBase } from '../../model/key-value-pair-base'
@Component({
moduleId: module.id,
selector: 'select-list',
templateUrl: './select-list.component.html',
styleUrls: ['./select-list.component.scss']
})
export class SelectListComponent implements OnInit {
@Input() private data: KeyValuePairBase[];
constructor() {
super();
}
ngOnInit() {
if (!this.name) throw new Error("'name' property is required by 'select-list' component");
if (!this.friendlyName) throw new Error(`'friendlyName' property is required by 'select-list' component '${this.name}'`);
}
}
Run Code Online (Sandbox Code Playgroud)
第二部分:
import { Component } from '@angular/core';
import { SelectListComponent } from '../select-list/select-list.component'
@Component({
moduleId: module.id,
selector: 'radio-list',
templateUrl: './radio-list.component.html',
styleUrls: ['./radio-list.component.scss']
})
export class RadioListComponent extends SelectListComponent {
}
Run Code Online (Sandbox Code Playgroud)
Angular 的最佳实践是一个组件包含一个模板。如果要将相同的逻辑应用于两个视图,则应在服务内创建该逻辑,并将一项服务用于两个不同的组件视图集。URL 是一个不同的问题,由路由器处理。您应该将组件 A 分配给 URL A,将组件 B 分配给 URL B。
| 归档时间: |
|
| 查看次数: |
16248 次 |
| 最近记录: |