Angular 当新数据添加到sessionStorage时,如何更新角度组件?
我正在使用一个服务在两个组件之间进行通信。这个想法是,当我在组件A上单击“添加到剪贴板”时,它会被添加到会话存储中。然后组件B应该检索它并更新视图 我已经设法让它大部分工作,使我的项目出现在组件B中并持久化-但只有在页面重置之后。如何在每次添加内容时让组件B刷新 组件A发送方中的方法 服务Angular 当新数据添加到sessionStorage时,如何更新角度组件?,angular,Angular,我正在使用一个服务在两个组件之间进行通信。这个想法是,当我在组件A上单击“添加到剪贴板”时,它会被添加到会话存储中。然后组件B应该检索它并更新视图 我已经设法让它大部分工作,使我的项目出现在组件B中并持久化-但只有在页面重置之后。如何在每次添加内容时让组件B刷新 组件A发送方中的方法 服务 理想情况下,每次“项目”列表刷新时,我都要更新组件,我必须在服务中使用会话,因为这些项目需要保留到用户注销为止。存储在服务变量中,而不是会话中,并作为行为主体提供,以便可以从任何组件订阅 这将持续存在,如果需
理想情况下,每次“项目”列表刷新时,我都要更新组件,我必须在服务中使用会话,因为这些项目需要保留到用户注销为止。存储在服务变量中,而不是会话中,并作为行为主体提供,以便可以从任何组件订阅 这将持续存在,如果需要,您可以使用一个函数在注销时清除服务变量。e、 g: 服务:
itemsSubject = new BehaviorSubject<Item[]>(this.getItems());
addItem(item)
{
this.items.push(item);
}
getItems()
{
return this.items;
}
某些身份验证服务:
LogOut()
{
//clear session then:
this.clipboardService.items = [];
}
您应该通过服务而不是存储进行通信。当您更改存储中的项时,只需通过主题发出某种事件。如果这些项存储在服务变量中,它们将以某种方式保持。您可以使用一个函数在用户注销时清除items变量。不需要开会。
import { Component, OnInit, OnChanges, ChangeDetectionStrategy } from '@angular/core';
import { Item } from 'src/app/models/item';
import { ClipboardService } from '../clipboard.service';
@Component({
selector: 'app-clipboard',
templateUrl: './clipboard.component.html',
styleUrls: ['./clipboard.component.css'],
})
export class ClipboardComponent implements OnInit {
items: Item [] = [];
constructor(private clipboardService: ClipboardService) {
}
ngOnInit() {
this.items = this.clipboardService.getItemsFromClipBoard();
}
}
itemsSubject = new BehaviorSubject<Item[]>(this.getItems());
addItem(item)
{
this.items.push(item);
}
getItems()
{
return this.items;
}
export class MyComponent
items: Item[];
//constructor
this.clipboardService.itemsSubject.subscribe(res =>
{
this.items= res;
});
LogOut()
{
//clear session then:
this.clipboardService.items = [];
}