我有一个服务来处理服务器中的消息并为它创建一个可观察的服务,如下所示:
serverMessage$: Observable<string>;
private serverMessageSubject: Subject<string>;
constructor() {
this.serverMessageSubject = new Subject<string>();
this.serverMessage$ = this.serverMessageSubject.asObservable();
}
setServermessage(message: string) {
this.serverMessage = message;
this.serverMessageSubject.next(this.serverMessage);
}
我正在组件中等待此字符串,并将其添加到我的textarea中,如下所示:
.ts文件
serverMessage: string;
constructor(
private cs: CommonService
) {
this.cs.serverMessage$.subscribe((message: string) => {
this.serverMessage += message;
});
}
.html文件
<div class="col-md-12" *ngIf="serverMessage">
<textarea style="width: 100%" cols="50" rows="10">{{ serverMessage }}</textarea>
</div>
在这里调用setServermessage:
signalr.service.ts
onMessageReceived(serverMessage: string) {
this.cs.setServermessage(serverMessage);
}
问题是当我在我的文本区域中记录消息时,它输出前一条消息和当前消息,从而使输出重复。我只想将新消息附加到我的textarea中的旧消息上。我需要你的帮助。谢谢。
答案 0 :(得分:1)
您的案例是使用扫描运算符的完美案例
您可以执行以下操作,而不是使用局部变量并添加字符串:
您的服务将保持不变。但是您将组件逻辑更改为此
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>cocoacasts.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
然后您可以在模板中执行类似的操作
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>