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
indexDatacomoobservable (ReplaySubject),indexEditDataapenas um array normal de objetos - obtenha dados da sua fonte e armazene em
indexData. Inscreva-se nele e armazene o valor emindexEditData - use
indexEditDatapara atualizar/editar etc - uma vez que a edição esteja concluída, substitua o valor de
indexDatausandoindexData.next(indexEditData)
Espero que isso resolva seu problema.