我有第三方角度组件,它是显示用户数据的表格。如果传递给表的对象发生更改,表将自行更新。
Angular如何检测对象的更改?我有以下例子:
user.component.ts
:
@Component({
selector: 'app-user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.css'],
})
export class UserComponent implements OnInit {
private _users: User[];
set users(users: User[]) {
this._users = users;
}
get users(): User[] {
return this._users;
}
constructor() {}
addUserToTheList(user: User) {
// this won't be detected as a change to the object
this.users.push(user);
// on the other hand, this will
let userList: User[] = this.users;
userList.push(user);
this.users = userList;
}
}
这是否意味着我必须完全替换对象以触发更改检测,或者我在某种程度上完全忽略了这一点?或者它可能是第三方库(Clarity Design System
)
答案 0 :(得分:5)
您正在使用的表组件可能正在实现ChangeDetectionStrategy.OnPush
。
这意味着组件会将所有输入视为 immutable (意味着它永远不会更改),因此仅在更换输入对象时运行更改检测。 / p>