我想将一个函数传递给子组件。传递函数正常工作。问题是,如果我想更改父组件的属性值,这将无法正常工作,因为'this'不引用父组件,而是引用子组件(本例中为DatagridComponent)Angular - 将函数传递给子组件,'this'的错误上下文
this
的上下文似乎成为问题。请参阅下面的代码。
父组件:
@Component({
selector: 'app-user-management',
templateUrl: './user-management.component.html',
styleUrls: ['./user-management.component.css'],
})
export class UserManagementComponent implements OnInit {
showUserDetails: boolean: false;
showUsergroupDetails = false;
onSelectUser() {
this.showUsergroupDetails = false;
this.showUserDetails = true;
console.log(this.showUsergroupDetails); // prints false, as expected
console.log(this.showUserDetails); // prints true, as expected
console.log(this); // prints DatagridComponent :(
}
HTML,传递onSelectUser的功能:
<app-datagrid [onSelection]="onSelectUser"></app-datagrid>
子组件:
@Component({
selector: 'app-datagrid',
templateUrl: './datagrid.component.html',
styleUrls: ['./datagrid.component.css']
})
export class DatagridComponent implements OnInit {
@Input() onSelection:() => {};
onSelectListItem(item: any) {
// some code
if (this.onSelection) {
this.onSelection(); // is executed, results see comments in parent component
}
}
}
子组件的HTML:
<div *ngFor="let item of items" (click)="onSelectListItem(item)">
....
</div>
我该如何做到这一点?
你可能想看看[分量互动]( https://angular.io/guide/component-interaction)docs,有许多不同的方法来实现父子组件之间的交互 –