I have a simple case of pushing unique values into array. It looks like this:
this.items = []; add(item) { if(this.items.indexOf(item) > -1) {
Your logic is saying, "if this item exists already, then add it." It should be the opposite of that.
Change it to...
if (this.items.indexOf(item) == -1) { this.items.push(item); }