赋值表达式Angular 2+的左侧错误

时间:2018-09-18 07:40:48

标签: angular filter

我目前正在尝试过滤从硬编码数据返回的JSON。在我的组件中,我的代码当前如下所示:

export class CtaComponent implements OnInit {
  @Input() ctaId: string;

  public ctaCards: CtaCards.ICtaCard[];
  constructor(private ctaService: CtaService) {
  }

  ngOnInit() {
    if (this.ctaId !== undefined) {
      this.ctaService.getCtaCards(this.ctaId)
        .subscribe(x => {
          this.ctaCards.find(z => z.id == this.ctaId) = x
        })
    }
  }
}

我确信您可以看到,带有find的行不起作用。 ctaId是用于根据JSON ID进行过滤的ID。但是,find的代码被高亮显示为错误,并说The left hand-side assignment expression must be a variable or property access.对于Angular来说我还很陌生,所以这可能只是明显的错误。我研究过的东西似乎都没有帮助我。

我的服务如下:

export class CtaService {
  private ctaCard: BehaviorSubject<CtaCards.ICtaCard[]>
  private productUrl = 'src/assets/cta.json'

  constructor(private http: HttpClient) {}

  public getCtaCards(id: string): BehaviorSubject<CtaCards.ICtaCard[]{
    if (id) {
      this.ctaCard = new BehaviorSubject<CtaCards.ICtaCard[]>(null);

      this.http.get(this.productUrl).pipe(
        retry(3)
      )
        .subscribe((x: CtaCards.ICtaCard[]) => this.ctaCard.next(x))
    }
    return this.ctaCard;
  }
}

1 个答案:

答案 0 :(得分:1)

您正在尝试找到一些ctaCard并为其分配x。您不能这样做,因为

find返回:

满足提供的测试功能的数组中第一个元素的值;否则,返回undefined。
 而且,您不能分配某些值而不是变量。您正在尝试执行以下操作:

var a = 5;
5 = 10;

这毫无意义。

您宁愿使用findIndex,如下所示:

index = this.ctaCards.findIndex(z => z.id == this.ctaId);
this.ctaCards[index] = x;