http.get () идентификатор передачи - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь получить подробную информацию из URL-адреса, вызываемого через http.get () в машинописи. Моя конечная точка URL-адреса для получения этой информации представляет собой вид localhost:8001\character\1234567890, где число - это идентификатор символа.

Если я проверяю в браузере, URL-адрес возвращает все данные.

Моя проблема связана с вызовом функции машинописи. Впереди HTML, я вызываю функцию как:

<a href="#{{character.id}}" (click)="characterDetail(character.id)">Read more</a>

Затем остальные функции:

characterDetail(characterId: number) {
    this.asyncCharDetail = this.getCharacterDetail(characterId)
        .do(res => {
            console.log(res);
        })
        .map(res => res.results);
}



getCharacterDetail(characterId: number) {
    return this.http.get(this.characterDetailApiUrl + characterId,{})
        .map((res: Response) => res.json())
}

console.log(res) из первой функции ничего не печатает. characterId и url верны оба, но не знают причину не получить информацию о символах.

Вторая часть при извлечении данных - показывать это в модальном окне.

Редактировать: Здесь у вас есть больше кода:

private characterDetailApiUrl = 'http://localhost:8001/character/';
....
//To save the character details from Http get.
asyncCharDetail: Observable<string[]>;

characterDetail(characterId: number) {
    console.log('Character detail for ID ' + characterId);
    this.loading = true;
    this.asyncCharDetail = this.getCharacterDetail(characterId)
        .do(res => {
            console.log(res);
            this.loading = false;
        })
        .map(res => res.results);
    console.log(this.asyncCharDetail);
}

getCharacterDetail(characterId: number) {
    return this.http.get(this.characterDetailApiUrl + characterId )
        .map((res: Response) => res.json());
}

В файле Html:

<a href="" (click)="characterDetail(character.id); $event.preventDefault()">Read more</a>

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Вы должны подписаться на Observable, чтобы он что-то сделал.

characterDetail(characterId: number) {
    this.getCharacterDetail(characterId)
        .do(res => {
            console.log(res);
        })
        .map(res => res.results)
        .subscribe(data => { 
           //...do something with data
        });

}
0 голосов
/ 03 мая 2018

Я изменил функцию с 2 на 1, и теперь у меня есть некоторые данные от персонажа. Теперь работает как предложение @CornelC

getCharacterDetail(characterId: number) {
    return this.http.get(this.characterDetailApiUrl + characterId)
        .subscribe(res =>
            console.log(res.json())
        );
}

Теперь я вызываю функцию из внешнего интерфейса, но мне нужно показать модальное окно с полученными данными

0 голосов
/ 03 мая 2018

return this.http.get(this.characterDetailApiUrl + characterId,{})

Просто URL должен быть в порядке. Можете ли вы проверить, что вы получаете после удаления ,{}? итак return this.http.get(this.characterDetailApiUrl + characterId)

Если вам нужен полный ответ, попробуйте заменить {} на { observe: 'response' }

...