📅  最后修改于: 2023-12-03 14:52:06.384000             🧑  作者: Mango
在 TypeScript 中,我们可以使用链接来在组件之间传递数据。链接是一个简单的粘合剂,将一个组件的输出与另一个组件的输入连接起来。
链接是连接一个组件的输出属性和另一个组件的输入属性的指令。通过链接,输出属性的值可以实时地传递给输入属性,并更新接收方组件的状态。
创建一个链接相对简单,我们只需要在目标组件的输入属性上添加 @Input()
装饰器,并在源组件的模板上使用方括号语法来绑定输出属性和对应的输入属性即可。
示例代码:
// 接收方组件 (
@Component({
// ...其它元数据
})
export class ChildComponent {
@Input() message: string;
}
// 发送方组件 (
@Component({
// ...其它元数据
})
export class ParentComponent {
messageToChild = 'Hello, child!';
}
<!-- 发送方组件的模板 -->
<app-child [message]="messageToChild"></app-child>
这里的 message
是接收方组件的输入属性,messageToChild
是发送方组件的输出属性。
除了简单的属性绑定外,我们还可以使用数据绑定来动态地更新链接中的数据。更改发送方组件的属性值会立即更新接收方组件的输入属性值。
示例代码:
// 接收方组件类
@Component({
// ...其它元数据
})
export class ChildComponent {
@Input() message: string;
}
// 发送方组件类
@Component({
// ...其它元数据
})
export class ParentComponent {
messageToChild = 'Hello, child!';
updateMessage() {
this.messageToChild = 'Hello, world!';
}
}
<!-- 发送方组件模板 -->
<button (click)="updateMessage()">Update message</button>
<app-child [message]="messageToChild"></app-child>
当用户点击“Update message”按钮时,messageToChild
的值将被更新为“Hello, world!”,并且输入属性 message
也将相应地更新。
除了属性绑定外,我们还可以使用事件绑定来在链接中发送事件和数据。这种绑定是双向的,即每当一个组件的输入或输出属性值都会相应地更新另一个组件的输入或输出属性值。
示例代码:
// 接收方组件类
@Component({
// ...其它元数据
})
export class ChildComponent {
@Input() message: string;
@Output() messageChange = new EventEmitter<string>();
}
// 发送方组件类
@Component({
// ...其它元数据
})
export class ParentComponent {
messageToChild = 'Hello, child!';
updateMessage() {
this.messageToChild = 'Hello, world!';
}
}
<!-- 发送方组件模板 -->
<button (click)="updateMessage()">Update message</button>
<app-child [(message)]="messageToChild"></app-child>
这里的 messageChange
是接收方组件的输出属性,[(message)]
是一个语法糖,将一个输入([message]
)和一个输出(messageChange
)组合在一起。
当我们点击“Update message”按钮时,组件的 messageToChild
属性将被更新为“Hello, world!”,并且输出属性 messageChange
也将触发,将更新传递给接收方组件的输入属性 message
。
链接是 TypeScript 中传递数据的有效方式。我们可以使用属性绑定、事件绑定和数据绑定来建立链接,从而使组件之间的交互变得更加强大和灵活。