将数据从父级传递给子角度4

我有一些一般性的问题,我从第_1309677页开始_通过 onInit 我从一个mongoose数据库服务器中获取数据,我将其保存在一个数组中 .

此阵列需要在其他组件中可用 . 我现在这样做的方式似乎有效,通过使用 service.ts

在服务中我有很多 BehaviorSubjectsSubjects . 因此,每当我从mongoose获取数组数据时,我都会向服务发送消息,其他组件会订阅该消息 .

我有时使用 Subject 而不是 BehaviorSubject ,因为它抛出错误消息,就像在HTML中我使用 *ngFor 并且它需要一个数组,而不是字符串'default message' .

我只是想知道这是否是在页面之间移动数据的正确设置 . 现在我也在使用这个消息系统来更新我的组件 . 因此,如果有人在我的网站上发表评论或发帖,我会向我的服务发送一条消息,然后更新一个可观察对象,我的组件再次订阅 .

是否有更好的方法来更新我的网站以获取新数据,并且有一种简单的方法可以解释为什么有时我会从 *ngFor 收到此错误消息,而在其他情况下,它仍然会在使用 *ngFor 时抛出此错误 .

即当我更新一个observable时,组件会立即收到消息,或者它会收到onInit .

这也是最好的做法是在组件的构造函数或 onInit 中使用下面的问题 . 我取消订阅 OnDestroy .

this.newService.currentMessageComment
  .takeWhile(() => this.alive)

   .subscribe(message => {

service.ts

public messageSourceMarketCap = new BehaviorSubject<any>('default message');
currentMessageMarketCap = this.messageSourceMarketCap.asObservable();

public messageSourceHistory = new Subject<any>();
currentMessageHistory = this.messageSourceHistory.asObservable();

public messageSouceApi = new BehaviorSubject<any>('default message');
currentMessageApi = this.messageSouceApi.asObservable();

public messageSourceBody = new BehaviorSubject<any>('default message');
currentMessageBody = this.messageSourceBody.asObservable();

回答(1)

2 years ago

你为什么使用BehaviouSubject . 我认为在你的情况下,主题会更好 . 如果要在创建observable时传递初始值,则可以使用BehaviouSubject .

你也可以通过发出一个空数组来快速修复,因为ngFor需要一个数组 . 从“默认消息”更改为[] .

希望它会有所帮助