无法读取未定义的属性。可通过异步管道观察

问题描述 投票:0回答:0

我在顶部有一个带有搜索输入的下拉菜单。

在我的 ts 文件中我有这些变量:

 public raContinuousControl: FormControl;
    public raList: IAssociateOptions[];
    public filteredRaList$: Observable<IAssociateOptions[]>;

我有一份从我的服务中获得的清单,例如:

this._msService.getMilestoneData().subscribe(
            data => {

                this.raList = data.raList;

        
            },
            err => {
                this._overlaySvc.close();
            }
        );

我将 Observable 设置为 onInit:

 this.filteredRaList$ = this.raContinuousControl.valueChanges.pipe(
            startWith(''),
            map((ra) =>

                ra ? this.filterRaList(ra) : this.raList.slice()
            )
        );

<form>
            <mat-form-field class="tableFilters">
                <input matInput
                       placeholder="RA"
                       aria-label="RA"
                       [formControl]="raContinuousControl"
                       [matAutocomplete]="raAuto"/>
                <mat-autocomplete #raAuto="matAutocomplete">
                    <mat-option *ngFor="let ra of filteredRaList$ | async"
                                [value]="ra.associateID">
                        <span>{{ra.associateName}}</span>
                    </mat-option>
                </mat-autocomplete>
            </mat-form-field>
        </form>

每次我运行应用程序时,它都会说“无法读取未定义的属性(读取‘slice’)

我知道 raList[] 有价值,甚至在一个单独的函数中对它做了 slice() 。一直在努力解决这个问题,非常感谢任何帮助!!

我关注了这个 stackblitz https://stackblitz.com/edit/angular6-material-autocomplete-1ojdqa?file=src%2Fapp%2Fapp.component.html 并尝试将其实现到我自己的代码中。我是 RxJS 的新手

angular asynchronous observable
© www.soinside.com 2019 - 2024. All rights reserved.