html - 如何将逗号分隔的json数组放入来自ngFor的span标签中,角度为8
问题描述
我有简单的对象数组。我将它们用于循环 ngFor。我可以渲染。但问题是 json 包含 Treatment":"OPD,MEDICINES"。所以我需要将那些逗号分隔的值迭代到 span 中并放入边界。这是下面的代码
home.component.html
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="mb-3 text-right">
<input [(ngModel)]="searchText" autocomplete="off" class="col-md-3 searchinput" type="text" placeholder="Search.."/>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered expensetable">
<thead>
<tr>
<th>Date</th>
<th>Treatment</th>
<th>Expenses</th>
</tr>
</thead>
<tbody>
<ng-container *ngIf="( getListData | filter:searchText) as result">
<tr *ngFor="let item of result">
<td>{{item.Date}}</td>
<td>{{item.Treatment}}</td>
<td>{{item.Expenses}}</td>
</tr>
<tr *ngIf="result.length === 0">
<td colspan="3" class="text-center">No Data Found</td>
</tr>
</ng-container>
</tbody>
</table>
</div>
</div>
</div>
home.component.ts
import { Component, OnInit } from '@angular/core';
import { CommonserviceService } from './../utilities/services/commonservice.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
getListData: any;
constructor(private commonserviceService: CommonserviceService) { }
ngOnInit() {
this.getHeroes();
}
getHeroes(){
this.commonserviceService.getData().subscribe(getListData =>{
this.getListData = getListData;
console.log(this.getListData);
},
(error) => {
alert('No data');
}
);
}
}
公共服务.service.ts
import { Injectable } from '@angular/core';
import {Http,Headers} from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable({
providedIn: 'root'
})
export class CommonserviceService {
constructor(private http:Http) { }
getData(){
let url = "http://dummy.restapiexample.com/api/v1/employees";
return this.http.get(url)
.map(
(res) =>{
let resData = /*res;*/ [{"Date":"8/02/2020","Expenses":750,"Treatment":"OPD,MEDICINES"},{"Date":"15/02/2020","Expenses":2565,"Treatment":"OPD,MEDICINES,ULTRASOUND SCAN"}]
console.log(resData);
return resData;
}
);
}
}
解决方案
尝试这个。
1) 在 ts 文件中创建一个函数。此函数将用逗号分割您的处理字符串。为此使用 javascript 本机函数拆分。这将返回一个数组。循环遍历此数组并创建所需的 html。
2) 用于[innerHtml]
在表的 td 中赋值
.ts 文件
getTreatment(data) {
let str = ''
let arr = data.split(',');
if (arr.length > 0) {
for (let i = 0; i < arr.length; i++) {
str += '<p>' + arr[i] + '</p>'
}
}
return str
}
.html
<table class="table" border="1px">
<thead>
<tr>
<th>Date</th>
<th>Treatment</th>
<th>Expenses</th>
</tr>
</thead>
<tbody>
<ng-container>
<tr *ngFor="let item of resData">
<td>{{item.Date}}</td>
<td [innerHtml]="getTreatment(item.Treatment)"></td>
<td>{{item.Expenses}}</td>
</tr>
</ng-container>
</tbody>
</table>
工作链接
https://stackblitz.com/edit/angular-mwd3us
注意 : : 也可以使用管道完成。您可以使用管道尝试
推荐阅读
- java - 线程安全的最终一致计数器
- python - 发疯:如何在 CentOS 7 上安装 python 3.7.6
- python - 为什么 os.environ ["SDL_VIDEO_CENTERD"] = "1" 与 IDLE 一起使用而不是 sublime 文本
- r - tsfknn:: 将自动绘图预测提取到表格中
- python - 使用python从postgres中检索varchar
- python - 在 Python unittest 中,有没有办法编写在断言失败时运行的代码?
- php - Problem with the phpMyAdmin ssl configuration
- java - Discord JDA Bot 在调用扩展类时抛出 NullPointerException
- botframework - 在 Composer 中将 Timex 转换为日期
- javascript - 使用 Octokit 登录 Github 的 NodeJS 返回错误凭据