小编Тар*_*кий的帖子

使用 IterableDiffer 获取 Angular 8 中数组大小的变化

我有带有对象数组的角度分量

export class AlertsConfigListComponent implements OnInit, DoCheck {
@Input() config: ProductAlertConfig[];
Run Code Online (Sandbox Code Playgroud)

并使用 IterableDiffer 来获取该数组的更改: constructor(private iterableDiffers: IterableDiffers) { this.iterableDiffer = iterableDiffers.find([]).create(null); }

ngDoCheck(): void {
let changes : IterableChanges<ProductAlertConfig> = this.iterableDiffer.diff(this.config);
if (changes) {
  this.doSmth();
}
Run Code Online (Sandbox Code Playgroud)

}

它有效,每次更改数组时我都可以得到更改。所以现在我的问题是。如何检查数组大小已更改的更改对象,因为当我对此数组进行排序时也会触发它。IterableChanges对象中没有用于此目的的属性。

如果我可以获得新的数组大小,我会这样做:

ngDoCheck(): void {
let changes : IterableChanges<ProductAlertConfig> = this.iterableDiffer.diff(this.config);
if (changes && newSize !== oldSize) {
  this.doSmth();
}
Run Code Online (Sandbox Code Playgroud)

}

它可以解决问题,但是还有其他解决方案吗?

javascript iterable angular2-changedetection angular

5
推荐指数
1
解决办法
3171
查看次数

如何为连续组合提供行号并将其复制以进行重复

我创建了一个简单的表格来说明我的问题:

DECLARE @Test TABLE
          (
              id int,
              Type VARCHAR(10),
              SectionId int
          )

Insert into @Test
SELECT 1,'RED', 100
UNION ALL SELECT 2, 'RED', 100
UNION ALL  SELECT 3, 'BLUE', 100
UNION ALL SELECT  4, 'RED', 200
UNION ALL SELECT  5, 'BLUE', 200
UNION ALL SELECT  6, 'RED', 300
UNION ALL SELECT  7, 'BLUE', 300
UNION ALL SELECT  8, 'BLUE', 300
Run Code Online (Sandbox Code Playgroud)

所以我想为每一行提供行号,但在TypeSectionId 相同时重复它:

id, Type, SectionId, RowNumber
1, 'RED', 100        1
2, 'RED', 100        1
3, 'BLUE',100 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

1
推荐指数
1
解决办法
194
查看次数