#angularjs #json #typescript #rxjs
#angularjs #json #typescript #rxjs
Вопрос:
У меня есть приложение angular2 (TypeScript), которое использует RxJS для обработки json-запроса (я знаю о службах angular, я просто упростил код).
Этот код находится в методе класса:
this.http.post(url, body, options)
.map(
response => response.json()
)
.subscribe(result => {
persons => this.persons = persons
});
В классе у меня есть поле persons
, и я хочу, чтобы это поле получало данные из ответа, чтобы использовать это persons
в *ngFor
Также у меня есть java-сервер, который выдает такой ответ (я получил этот результат после добавления console.log()
map()
):
message:"[{"personId":"29d5a903-b664-4fc3-9bd9-0836f1b3dc58","email":"test@example.com","firstname":"Test","lastname":"Testoff","username":"oooo","birthdate":"2000-05-28","gender":"male","password":"xxxxx","active":null,"profiles":[]}]"
Что я делаю не так? (Я сторонний разработчик, извините, за глупые вопросы, может быть)
Комментарии:
1. Что такое
response.json()
? Вы уверены, что он возвращает строку?result => { persons => this.persons = persons }
— это также не выглядит синтаксически корректным.2. У меня есть исправленный код, он был для отладки, чтобы определить, что не так, извините. «синтаксически корректно» — TypeScript считает, что все в порядке, также, пожалуйста, проверьте здесь plnkr.co/edit/r1QFQj0wZ5hgJxrsRoGF?p=preview
3. typescriptlang.org/play — попробуйте
const foo = () => { foo => 2; };
и посмотрите, во что это переводится. Он преобразует его в анонимную функцию, которая не вызывается, следовательно, она не работает. PS: да, это синтаксически правильно, мой плохой, но логически это неправильно.4. Я не понимаю, что не работает…
Ответ №1:
Я видел, что вы исправили код, и он работает. Я хотел бы изложить другое решение, которое больше соответствует философии angular2, не храните локальную переменную в своем приложении, используйте непосредственно последовательность службы:
<my-person
*ngFor="let person; of peopleService.people | async;"
[name]="person.name"
(hello)="saidHello($event)">
</my-person>