基于实例变量将对象隔离到mat-tabs中

时间:2018-04-19 06:29:04

标签: angular angular2-template

Angular 5

我在datasource中有两个标签,每个标签包含mat-table。有一个对象数组被提取到<mat-tab-group> <mat-tab label="tab1"> <div> <mat-table #table [dataSource]="dataSource" matSort> ... </mat-table> </div> </mat-tab> <mat-tab label="tab2"> <div> <mat-table #table [dataSource]="dataSource" matSort> ... </mat-table> </div> </mat-tab> <mat-tab-group> 中,用于填充这些function getPattern(dt) { let y = moment(dt).format('YYYY').split(''); let patternStr = `^(194[5-9]|19[5-9]\\d|20[0-${y[2]-1}]\\d|20${y[2]}[0-${y[3]}])$`; return new RegExp(patternStr); } let pattern = getPattern(new Date()); console.log(pattern.test('1944')); // false console.log(pattern.test('1945')); // true console.log(pattern.test('1975')); // true console.log(pattern.test('2000')); // true console.log(pattern.test('2002')); // true console.log(pattern.test('2010')); // true console.log(pattern.test('2011')); // true console.log(pattern.test('2018')); // true console.log(pattern.test('2019')); // false console.log('***'); pattern = getPattern('2023-01-01'); console.log(pattern.test('2018')); // true console.log(pattern.test('2019')); // true console.log(pattern.test('2020')); // true console.log(pattern.test('2021')); // true console.log(pattern.test('2022')); // true console.log(pattern.test('2023')); // true console.log(pattern.test('2024')); // false。每个对象都有一个变量,比如x,可以取一个等于1或2的值。 / p>

如果对象的x = 1,它应该进入第一个标签,否则进入第二个。

我该怎么做?

当前结构:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

注意:我想这可以使用内联模板变量来完成,但不知道如何。如果有的话,也可以接受更好的解决方案。

1 个答案:

答案 0 :(得分:1)

在您的情况下,您将无法为所有标签创建一个数据源,您需要为每个标签提供唯一数据源。

像解决方案一样,我会先准备好所有数据,然后按&#34; x&#34; PARAM。

在下一步中,将所有分组数据转换为MatTableDataSource对象。

最后一步是使用* ngFor来渲染所有&#34; mat-tab&#34;对于每个小组。