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>
注意:我想这可以使用内联模板变量来完成,但不知道如何。如果有的话,也可以接受更好的解决方案。
答案 0 :(得分:1)
在您的情况下,您将无法为所有标签创建一个数据源,您需要为每个标签提供唯一数据源。
像解决方案一样,我会先准备好所有数据,然后按&#34; x&#34; PARAM。
在下一步中,将所有分组数据转换为MatTableDataSource对象。
最后一步是使用* ngFor来渲染所有&#34; mat-tab&#34;对于每个小组。