Как использовать карту и присвоить значение обратно

Используйте $HTTP_RAW_POST_DATA вместо $_POST.

Он предоставит вам данные POST как есть.

Вы сможете декодировать его с помощью json_decode() позже.

1
задан Ranjith Varadan 27 March 2019 в 09:56
поделиться

2 ответа

Rxjs оператора транслирует всю таблицу одновременно. Оператор отображения Rxjs отображает всю таблицу на новый вывод. Если вы хотите изменить элементы в таблице, вам также нужно использовать функцию js map для изменения всей таблицы, проверяя все элементы таблицы отдельно.

this.books.pipe(
      map(
        books => books.map( book => { ...book, IsEnable: this.getEligibleBooks(book) })),
    ).subscribe(data => console.log(data));
0
ответ дан shemekh 27 March 2019 в 09:56
поделиться
  • Поскольку вы фактически не меняете возвращаемый тип нигде, нет необходимости использовать map. Кажется, все, что вы хотите сделать, это перебрать возвращенный результат и, возможно, установить член в экземпляре книги. В этом случае используйте tap вместо map. map полезно, когда вы хотите преобразовать вход в другой выход.
  • Код должен делать различие между массивом и объектом при выполнении операции. Это становится легче увидеть, когда вы определяете ожидаемые типы в сигнатурах вашего метода как для входных данных (аргументов метода), так и для возвращаемого типа. То же самое касается именования аргументов, использования формы множественного числа для массивов и формы единственного числа для типов, не являющихся массивами. В этом случае используйте books и book.
  • Я бы порекомендовал использовать интерфейс над классом, поскольку у вас нет определенного поведения. Это проще при отображении разобранного json в тип.
  • Обратите внимание, что постоянными логическими значениями являются true и false, не присваивайте "True" / "False", поскольку это строковые литералы, а не логические значения. Если вы сделаете правдивое сравнение с "False", то получите оценку true

Books.ts

export interface IBook{
    Name:string;
    IsEnable:boolean;
    IsEligible?:boolean|undefined;
}

books.component .ts

books: IBook[];

getBooksAsync() : Observable<IBook[]> {
  return Observable.of([{"Name":"A", "IsEnable":false},{"Name":"B", "IsEnable":false}] as IBook[]);
}

isBookEligible(book: IBook): boolean {
  return true; // hard coded for now because there is no implementation
}

ngOnInit(){
    this.getBooksAsync.pipe(
        tap((books) => {
            books.forEach((book) => book.IsEligible = this.isBookEligible(book));
        })
    ).subscribe(books => this.books = books);
}
0
ответ дан Igor 27 March 2019 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: