Data binding Angular2双向绑定中相同名称的自定义输入和输出
我知道如何使用此组件的输出值的不同名称修复组件 让我分享我的代码 从“@angular/core”导入{Component,Input,Output,EventEmitter}; 从“./pipes/translation.pipe”导入{TranslationPipe} 我想要的是像这样使用它Data binding Angular2双向绑定中相同名称的自定义输入和输出,data-binding,typescript,angular,Data Binding,Typescript,Angular,我知道如何使用此组件的输出值的不同名称修复组件 让我分享我的代码 从“@angular/core”导入{Component,Input,Output,EventEmitter}; 从“./pipes/translation.pipe”导入{TranslationPipe} 我想要的是像这样使用它 [(mobile)]="myParam" [(mobile)]="myParam" 不过,这只适用于设置,自定义组件不支持吗?要使用这种紧凑的语法,需要遵循输入和输出 @Outp
[(mobile)]="myParam"
[(mobile)]="myParam"
不过,这只适用于设置,自定义组件不支持吗?要使用这种紧凑的语法,需要遵循输入和输出
@Output('mobileChange')发射器:EventEmitter=neweventemitter();
@输入('mobile')设置移动值(值){
this.msisdn_confirm=this.msisdn=value;
}
不鼓励通过向装饰器传递字符串参数来重命名输入和输出。宁可使用
@Output() mobileChange: EventEmitter<string> = new EventEmitter<string>();
@Input() set mobile(value) {
this.msisdn_confirm = this.msisdn = value;
}
@Output()mobileChange:EventEmitter=neweventemitter();
@输入()设置移动(值){
this.msisdn_confirm=this.msisdn=value;
}
上述Gunter代码的另一个示例可能会有所帮助:
export class TaskBook {
public taskBookID: number;
public title: String;
}
内部组件代码:
....
<input type="text" pInputText [(ngModel)]="data!.title" (change)="onDataChange()" />
....
@Component({
selector: 'taskbook_edit',
templateUrl: './taskbook_edit.component.html'
})
export class TaskbookEditComponent {
@Input() data: TaskBook;
@Output() dataChange = new EventEmitter<TaskBook>();
constructor() { }
onDataChange() {
this.dataChange.emit(this.data);
}
}
。。。。
....
@组成部分({
选择器:“任务书编辑”,
templateUrl:“./taskbook_edit.component.html”
})
导出类TaskbookEditComponent{
@输入()数据:任务书;
@Output()dataChange=neweventemitter();
构造函数(){}
onDataChange(){
this.dataChange.emit(this.data);
}
}
外部-内部调用组件:
<taskbook_edit [(data)]="taskbookObj" ></taskbook_edit>
public taskbookObj: TaskBook;
公共任务书obj:任务书;
因此,最好将这些内容放在堆栈溢出上,不管怎样,这是我的主要文档来源。接近本节末尾时,感谢您的快速响应!angular.io文档部分的更新链接:angular.io文档部分的更新链接:甘特的答案是重用OP的代码,但我认为你的答案对于仍然不太熟悉angular语法某些部分的其他人来说更清楚。谢谢你的例子!这就是我的意图:)谢谢你的评论。
export class TaskBook {
public taskBookID: number;
public title: String;
}
....
<input type="text" pInputText [(ngModel)]="data!.title" (change)="onDataChange()" />
....
@Component({
selector: 'taskbook_edit',
templateUrl: './taskbook_edit.component.html'
})
export class TaskbookEditComponent {
@Input() data: TaskBook;
@Output() dataChange = new EventEmitter<TaskBook>();
constructor() { }
onDataChange() {
this.dataChange.emit(this.data);
}
}
<taskbook_edit [(data)]="taskbookObj" ></taskbook_edit>
public taskbookObj: TaskBook;