如果没有值,如何显示没有芯片的区域
How to show the area without chips if there is no value
我的table使用筹码输入"type"下的数值。但是当其中没有值时。里面还有一个空芯片。有人知道我该如何解决这个问题吗?
[![html
<ng-container matColumnDef="type">
<th mat-header-cell *matHeaderCellDef mat-sort-header="type">Type</th>
<td mat-cell *matCellDef="let truck" class="pr-24">
<mat-chip-list>
<span *ngFor="let truck of truck.type.split(',')">
<mat-chip>{{truck}}</mat-chip>
</span>
</mat-chip-list>
</td>
</ng-container>][1]][1]
component.ts
import { Component, OnInit, ViewChild, ElementRef, Input, OnChanges } from '@angular/core';
import { MatPaginator, MatSort, MatTableDataSource, MatDialog, MatChipsModule, MatChipInputEvent } from '@angular/material';
import { SelectionModel } from '@angular/cdk/collections';
import { Truck } from '../truck';
import { MapsAPILoader } from '@agm/core';
import { TruckDetailComponent } from '../truck-detail/truck-detail.component';
import { PlannerProject } from 'app/services/planner-projects/planner-project';
import { TrucksService } from '../trucks.service';
import { map, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
import * as _ from 'lodash';
import { fromEvent } from 'rxjs';
import { ConfirmComponent } from 'app/shared/components/confirm/confirm.component';
import { FuseConfirmDialogComponent } from '@fuse/components/confirm-dialog/confirm-dialog.component';
import { MyDialogComponent } from 'app/main/delivery-orders/my-dialog/my-dialog.component';
import {COMMA, ENTER} from '@angular/cdk/keycodes';
@Component({
selector: 'app-trucks',
templateUrl: './trucks.component.html',
styleUrls: ['./trucks.component.scss']
})
export class TrucksComponent implements OnInit, OnChanges {
@Input() project: PlannerProject;
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;
selection: SelectionModel<Truck>;
_displayColumns: string[] = ['selectCol', 'truckSize', 'truckBuildUp', 'truckName', 'type', 'address', 'shift', 'maxWeight', 'maxVolume', 'actions'];
_dataSource: MatTableDataSource<Truck>;
@ViewChild('search') search: ElementRef;
projectData: string;
constructor(private mapsLoader: MapsAPILoader,
private _matDialog: MatDialog,
private truckService: TrucksService) { }
所以如果没有数据,它应该在没有芯片的行中显示一个空白区域
在你的芯片中添加一个 *ngIf,这将使其仅在 *ngIf 中满足条件时显示。
<mat-chip *ngIf="truck">{{truck}}</mat-chip>
Array.split()
一个空字符串 returns 一个包含 1 个空字符串的数组。将使用 *ngIf="truck.type"
的支票添加到您的筹码列表中,以便仅在它不为空时呈现。
var truck = {type: '' };
var s = truck.type.split(',');
console.log(s); // See Array with one item.
我会检查 truck.type 是否为空,因为 split 将 return 一个大小为 1 的数组,如果它不能拆分字符串,因此 return 是一个空字符串。这就是你得到空筹码的原因。
<mat-chip-list *ngIf="truck && truck.type && truck.type.length > 0">
<span *ngFor="let truck of truck.type.split(',')">
<mat-chip>{{truck}}</mat-chip>
</span>
</mat-chip-list>
编辑:更改了 *ngIf 检查卡车和 truck.type
[![html
<ng-container matColumnDef="type">
<th mat-header-cell *matHeaderCellDef mat-sort-header="type">Type</th>
<td mat-cell *matCellDef="let truck" class="pr-24">
<mat-chip-list>
<span *ngFor="let truck of truck.type.split(',')">
<mat-chip>{{truck}}</mat-chip>
</span>
</mat-chip-list>
</td>
</ng-container>][1]][1]
component.ts
import { Component, OnInit, ViewChild, ElementRef, Input, OnChanges } from '@angular/core';
import { MatPaginator, MatSort, MatTableDataSource, MatDialog, MatChipsModule, MatChipInputEvent } from '@angular/material';
import { SelectionModel } from '@angular/cdk/collections';
import { Truck } from '../truck';
import { MapsAPILoader } from '@agm/core';
import { TruckDetailComponent } from '../truck-detail/truck-detail.component';
import { PlannerProject } from 'app/services/planner-projects/planner-project';
import { TrucksService } from '../trucks.service';
import { map, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
import * as _ from 'lodash';
import { fromEvent } from 'rxjs';
import { ConfirmComponent } from 'app/shared/components/confirm/confirm.component';
import { FuseConfirmDialogComponent } from '@fuse/components/confirm-dialog/confirm-dialog.component';
import { MyDialogComponent } from 'app/main/delivery-orders/my-dialog/my-dialog.component';
import {COMMA, ENTER} from '@angular/cdk/keycodes';
@Component({
selector: 'app-trucks',
templateUrl: './trucks.component.html',
styleUrls: ['./trucks.component.scss']
})
export class TrucksComponent implements OnInit, OnChanges {
@Input() project: PlannerProject;
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;
selection: SelectionModel<Truck>;
_displayColumns: string[] = ['selectCol', 'truckSize', 'truckBuildUp', 'truckName', 'type', 'address', 'shift', 'maxWeight', 'maxVolume', 'actions'];
_dataSource: MatTableDataSource<Truck>;
@ViewChild('search') search: ElementRef;
projectData: string;
constructor(private mapsLoader: MapsAPILoader,
private _matDialog: MatDialog,
private truckService: TrucksService) { }
所以如果没有数据,它应该在没有芯片的行中显示一个空白区域
在你的芯片中添加一个 *ngIf,这将使其仅在 *ngIf 中满足条件时显示。
<mat-chip *ngIf="truck">{{truck}}</mat-chip>
Array.split()
一个空字符串 returns 一个包含 1 个空字符串的数组。将使用 *ngIf="truck.type"
的支票添加到您的筹码列表中,以便仅在它不为空时呈现。
var truck = {type: '' };
var s = truck.type.split(',');
console.log(s); // See Array with one item.
我会检查 truck.type 是否为空,因为 split 将 return 一个大小为 1 的数组,如果它不能拆分字符串,因此 return 是一个空字符串。这就是你得到空筹码的原因。
<mat-chip-list *ngIf="truck && truck.type && truck.type.length > 0">
<span *ngFor="let truck of truck.type.split(',')">
<mat-chip>{{truck}}</mat-chip>
</span>
</mat-chip-list>
编辑:更改了 *ngIf 检查卡车和 truck.type