我有一些一般性问题,我从页面main.ts
开始
通过onInit
我从一个mongoose数据库服务器获取数据,我将其保存在一个数组中。
此阵列需要在其他组件中可用。我现在使用service.ts
在服务方面,我有很多BehaviorSubjects
和Subjects
。因此,每当我从mongoose获取数组数据时,我都会向服务发送消息,其他组件会订阅该消息。
我有时使用Subject
而不是BehaviorSubject
,因为它会抛出错误消息,就像在HTML中使用*ngFor
并且它需要一个数组,而不是字符串'默认消息& #39 ;.
我只是想知道这是否是在页面之间移动数据的正确设置。 现在我也在使用这个消息系统来更新我的组件。 因此,如果有人在我的网站上发表评论或发帖,我会向我的服务发送一条消息,然后更新一个observable,我的组件再次订阅。
是否有更好的方法来更新我的网站以获取新数据,并且有一种简单的方法可以解释为什么有时我会从*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();
答案 0 :(得分:1)
您为什么使用BehaviouSubject。我认为在你的情况下,主题会更好。如果您想在创建observable时传递初始值,则可以使用BehaviouSubject。
你也可以通过发出一个空数组来快速修复,因为ngFor需要一个数组。从“默认消息”更改为[]。
希望它会有所帮助