Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 当新数据添加到sessionStorage时,如何更新角度组件?_Angular - Fatal编程技术网

Angular 当新数据添加到sessionStorage时,如何更新角度组件?

Angular 当新数据添加到sessionStorage时,如何更新角度组件?,angular,Angular,我正在使用一个服务在两个组件之间进行通信。这个想法是,当我在组件A上单击“添加到剪贴板”时,它会被添加到会话存储中。然后组件B应该检索它并更新视图 我已经设法让它大部分工作,使我的项目出现在组件B中并持久化-但只有在页面重置之后。如何在每次添加内容时让组件B刷新 组件A发送方中的方法 服务 理想情况下,每次“项目”列表刷新时,我都要更新组件,我必须在服务中使用会话,因为这些项目需要保留到用户注销为止。存储在服务变量中,而不是会话中,并作为行为主体提供,以便可以从任何组件订阅 这将持续存在,如果需

我正在使用一个服务在两个组件之间进行通信。这个想法是,当我在组件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 = [];

}