Angular change detection only checks object identity, not object content.
Inserts or removals are therefore not detected.
What you can do is to copy the array after each update
insertIds(id:any) {
this.metaIds.push(id);
this.metaIds = this.metaIds.slice();
}
or use IterableDiffer
to check for changes inside InputComponent
in ngDoCheck
like NgFor
does.