Angular2 -共享组件控制器
Angular2 - Share component controllers
我有两个页面组件,除了使用两个不同的类型类之外,它们使用相同的方法。这两个组件称为服务和用户。这两个组件都使用非常相似的模板,除了它显示的类属性信息。在两个控制器上重复方法似乎效率低下,是否有一种方法来组合/共享控制器。
服务。ts
import { Component } from '@angular/core';
import { CORE_DIRECTIVES } from '@angular/common';
const template = require('./service.component.html');
const style = require('./service.component.css');
interface Service {
id: number;
name: string;
summary: string;
path: string;
};
@Component({
selector: 'admin-services',
directives: [ CORE_DIRECTIVES],
template: template,
styles: [ style ]
})
export class ServiceComponent {
services = Services;
selectedService:Service ;
constructor() {
}
onselect(service:Service){
this.selectedService = service ;
}
onEdit(service:Service){
console.log("Edit: "+service);
}
onDelete(service:Service){
console.log("Delete: "+service);
}
onView(service:Service){
console.log("View: "+service);
}
onAdd(){
this.selectedService = <Service>{};
}
}
User.ts
import { Component } from '@angular/core';
import { CORE_DIRECTIVES } from '@angular/common';
const template = require('./users.component.html');
const style = require('./users.component.css');
interface User {
id: number;
image: string;
name: string;
email: string;
role: string;
};
@Component({
selector: 'admin-users',
directives: [ CORE_DIRECTIVES],
template: template,
styles: [ style ]
})
export class UsersComponent {
users = Users;
selectedUser:User ;
constructor() {
}
onselect(user:User){
this.selectedUser = user ;
}
onEdit(user:User){
console.log("Edit: "+user);
}
onDelete(user:User){
console.log("Delete: "+user);
}
onView(user:User){
console.log("View: "+user);
}
onAdd(){
this.selectedUser = <User>{};
}
}
是的,这就是Angular的组件驱动设计和Typescripts的类驱动设计的真正亮点所在:
如上所述定义了ServicesComponent
后,您可以简单地扩展该类并将不同的组件元数据附加到它:
@Component({
selector: 'admin-users',
directives: [ CORE_DIRECTIVES],
template: template,
styles: [ style ]
})
export class UsersComponent extends ServicesComponent {
constructor(){
super();
}
//override whatever methods/fields in the parent class you need to (and only those)
}
我相信您可以用一组方法创建一个服务并传入一个对象。然后将对象强制转换为所需的类,并在方法中使用它。
相关文章:
- 通过emberJS中的控制器修改组件的属性
- EmberJs-将所有来自子组件的操作路由到父组件,再路由到父控制器
- 在javascript主组件中定义Apex控制器
- 如何观察控制器/组件内阵列的变化
- 如何将值从可视化力量组件中的脚本传递到其控制器
- 控制器中的 Emberjs-1.0 组件和计算属性
- Emberjs-1.0 将控制器实例传递给 ember 组件
- 无法识别余烬组件 - 绑定属性渗入控制器
- Ember js 2.0 将计算属性从控制器传递到组件
- 如何在 ExtJS5 中从控制器向视图添加组件
- Ember.js设置控制器属性表单组件
- AngularJS应用程序组件(模块、工厂、控制器)定义的确切工作方式
- 如何使用ui路由器在组件驱动架构中定义控制器
- 将控制器操作传递给EmberJS中的组件会返回未定义的结果
- 如何将应用程序控制器中声明的值传递给组件
- 通过聚合物核心页组件指定默认的熨斗控制器路由(内部元素)
- 如何从成员控制器或组件观察把手模板中的多个状态
- 使用`this$watch`而不是'scope$手表`with'控制器组件'
- 角度2:在控制器/组件中创建路由
- 扩展控制器组件angularjs