gpt4 book ai didi

angular - Subject.subscribe 不在 ngOnInit 中触发

转载 作者:行者123 更新时间:2023-12-02 14:49:52 27 4
gpt4 key购买 nike

我已经在我的 service.ts 中定义了主题detail.component.ts中的onEditItem().next()中传递了id的值,在中订阅了Subject新的.component.ts但是订阅不起作用。订阅在 new.component.ts

ngOnInit 中完成

onEditItem() 中成功传递了 id 的值,但订阅不起作用。我试过在订阅中进行 console.log 检查。但是控制台中没有打印任何内容。

details.component.html

<a class="btn btn-primary" (click)="onEditItem()" routerLink="/new">Edit</a>

details.component.ts

  onEditItem(){this.contactService.startedEditing.next(this.id);}

contactService.ts

export class ContactService {
startedEditing =new Subject<number>();
}

new.component.ts

ngOnInit() {
this.subscription = this.contactService.startedEditing.subscribe(
(index: number) => {
console.log(index);

this.editedItemIndex = index;
console.log(this.editedItemIndex);
this.editMode = true;
this.editedItem = this.contactService.getContacts(index);

this.editForm.setValue({
name: this.editedItem.name,
address: this.editedItem.address
})
}
);
}

我希望 new.component.html 中定义的表单应该使用详细信息组件中的值进行初始化,但订阅在 ngOnInit 中不起作用。

最佳答案

Subjects 需要发出值,以便观察者对事件采取行动。

这意味着您必须点击您的 Div,或者切换到 BehaviorSubject,它返回订阅时流的最后一个值。

关于angular - Subject.subscribe 不在 ngOnInit 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56321265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com