#json #angular
Вопрос:
В моем приложении у меня есть массив json, и я могу отображать эти данные. все данные имеют переключатель. я хочу, чтобы при нажатии на переключатель данные этого элемента массива json печатались в формате html в другом компоненте. Что-то вроде ниже. Вот как это проявляется
в моем файле product.component.ts у меня есть ниже.
ngOnInit() { this.wordpressService.apiCall().subscribe((data)=gt;{ console.warn("get api data ",data); this.title=data; }) } radioHandle(event : any){ this.post=event.target.value; }
Затем в моем product.component.html Я отображаю некоторые данные json, как показано ниже.
lt;div class='container'gt; lt;div id="leftDiv"gt; lt;div *ngFor="let data of title"gt; lt;pgt; lt;input type="radio" name="posts" value="{{data | json}}" (change)="radioHandle($event)"gt; {{data.id}} lt;/pgt; lt;/divgt; lt;/divgt; lt;div id="rightDiv"gt; lt;app-productDisplay [parentData]=postgt;lt;/app-productDisplaygt; lt;/divgt; lt;/divgt;
теперь я хочу передать эти выбранные данные другому компоненту, вызывающему productDisplay.component.ts
@Input() public parentData: any;
И отображать данные внутри productDisplay.component.html
{{parentData}}
Это работает. Но проблема в том, что это отображение объекта json. Но я хочу напечатать некоторые свойства объекта json вместо всего json
Комментарии:
1. Может
{{parentData | json}}
быть, поможет2. @EMilen Он показывает данные json. Я хочу распечатать свойства отдельно. Что-то вроде parentData.Id. но это не работает
Ответ №1:
Вы пробовали JSON.parse()? Я думаю, это могло бы сделать то, что вы описали.
В вашем productDisplay.component.ts:
let parentDataParsed = JSON.parse(parentData)
И в вашем шаблоне:
{{parentDataParsed.Id}}
Комментарии:
1. Можете ли вы сказать мне, где это использовать в productDisplay.component.ts
2. Если вам не нужна строка json для чего-либо еще, я бы поместил ее прямо в часть подписки в product.component.ts и передал ее уже проанализированной в качестве входных данных компоненту productDisplay. Поэтому в компоненте ngOnInit() в продукте что — то вроде
...subscribe((data)=gt;{ ... this.parentDataParsed = JSON.parse(data) ... })
и вместо передачи родительских данных в качестве входных данных передайте уже проанализированный parentDataParsed. Или, я думаю, мог бы сделать конструктор в productDisplay.component.ts.3. @Dinithi это была какая-то помощь или вам нужно больше?
4. Я не пробовал этого делать. Поскольку я новичок в angular, у меня нет идеи, как его использовать.
Ответ №2:
Сначала вы должны проанализировать JSON в файле product.component.ts
ngOnInit() { this.wordpressService.apiCall().subscribe((data)=gt;{ console.warn("get api data ",data); this.parentDataParsed = JSON.parse(data) }) }
Передайте данные компоненту productDisplay с помощью привязки данных
lt;app-product-display [parentData]="parentDataParsed"gt;lt;/app-product-displaygt;
В компоненте productDisplay вы можете отображать отдельные поля
lt;pgt;ID: {{parentData?.id}}lt;/pgt; lt;pgt;TITLE: {{parentData?.title}}lt;/pgt; ....