#json #angular #typescript
#json #угловатый #машинописный текст #angular #typescript
Вопрос:
Когда я пытаюсь напечатать с помощью @place, он выдает ошибку, в то время как другие ключи доступны.
[{ «ИДЕНТИФИКАТОР»: «001»,
«Название»: «Евразийский голубь с воротником»,
«Тип»: «Голубь»,
«Научное название»: «Стрептопелия»,
«@place»: «Нью-Йорк» }]
Это ошибка, которую я получаю:
Ошибка синтаксического анализатора: неожиданная ошибка лексера токена: неожиданный символ [@] в столбце 6 в выражении [bird.@место], ожидаемый идентификатор или ключевое слово в столбце 7 в [{{bird.@место}}]
Файл component.ts выглядит следующим образом:
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { HttpErrorResponse } from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'JSON to Table ';
constructor (private httpService: HttpClient) { }
arrBirds: string [];
ngOnInit () {
this.httpService.get('./assets/birds.json').subscribe(
data => {
this.arrBirds = data as string []; // FILL THE ARRAY WITH DATA.
// this.arrService = JSON.stringify(data);
console.log(this.arrBirds);
},
(err: HttpErrorResponse) => {
console.log (err.message);
}
);
}
}
В component.html файл выглядит следующим образом:
<table *ngIf="arrBirds">
<tr>
<th>ID</th>
<th>Name of Bird</th>
<th>Type of Bird</th>
<th>Place</th>
</tr>
<tr *ngFor="let bird of arrBirds">
<td>{{bird.ID}}</td>
<td>{{bird.Name}}</td>
<td>{{bird.Type}}</td>
<td>{{bird.@place}}</td>
</tr>
</table>
Комментарии:
1. Вы уверены, что у вас нет опечатки с заглавной буквой P (вместо маленькой буквы p)?
2. Вы могли бы попробовать использовать скобки
bird['@Place']
вместо точечной записи.3. @Guilhermevrs это была ошибка. Но все же после использования p вместо P я получаю ту же ошибку.
4. @MichaelD пользовательский интерфейс отображает bird[‘@place’] вместо печати значений.
5. @SoubhagyaSahoo: Пожалуйста, покажите, как и где вы пытаетесь получить доступ к собственности.
Ответ №1:
Как было отмечено в моем комментарии, вы могли бы использовать обозначение скобок вместо обозначения точек.
<tr *ngFor="let bird of arrBirds">
<td>{{ bird['ID'] }}</td>
<td>{{ bird['Name'] }}</td>
<td>{{ bird['Type'] }}</td>
<td>{{ bird['@place'] }}</td>
</tr>
Рабочий пример: Stackblitz
Ответ №2:
В HTML я не знаю никакого другого метода для вызова свойства. Единственное решение, которое я вижу, — это сделать геттер.
В TS
get place() {
return bird['@Place']
}
В HTML
{{ place }}