Pesquisa de site

angular - valor observável é parte de outro observável


indexData e indexEditData são os observáveis que usei na minha aplicação. indexData contém um objeto JSON. Usei esses valores JSON para construir uma tabela. Eu fiz alterações nas linhas dessa tabela selecionando as linhas. Ao selecionar, o JSON da linha selecionada para edição será colocado em indexEditData. Dentro dessa variável, eu preciso fazer alterações nos valores. Quando altero os valores, isso também se reflete no observável indexData.

Como posso restringir essa mudança? Eu não quero alterar os valores em indexData enquanto estou editando em indexEditData.

private INDEX_DATA: any[] = [];
private indexDataSource = new BehaviorSubject(this.INDEX_DATA);
indexData = this.indexDataSource.asObservable();

private INDEX_EDIT_DATA: any[] = []; // For Grid in edit view 
private indexDataEditSource = new BehaviorSubject(this.INDEX_EDIT_DATA);
indexEditData = this.indexDataEditSource.asObservable();

Resposta #1

indexData é observável, mas você não precisa que indexEditData seja observável porque será apenas um estado local do componente.

Eu sugiro que você:

  • declare indexData como observable (ReplaySubject), indexEditData apenas um array normal de objetos
  • obtenha dados da sua fonte e armazene em indexData. Inscreva-se nele e armazene o valor em indexEditData
  • use indexEditData para atualizar/editar etc
  • uma vez que a edição esteja concluída, substitua o valor de indexData usando indexData.next(indexEditData)

Espero que isso resolva seu problema.