- 此问题在此处已有答案**:
async pipe sends 'null' value to the child component(5个答案)
16小时前关门了。
将存储在我的CacheService中的BehaviorSubject传递给需要any []的组件@Input()时,出现错误any []|键入'any []|null 'is not assignable to type' any []'错误被抛出,即使行为主体在服务中使用空数组的默认值示例化,我不确定为什么会发生这种情况,下面是我的应用程序的删节版本,以重现这个问题,任何帮助将不胜感激。
- 应用程序.组件. html**
<app-custom-select [options]="this.items$ | async"></app-custom-select>
- 应用程序组件. ts**
import { Component } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
import { CacheService } from './services/cache.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent
{
items$ = this.cache.items.data$;
constructor(private cache: CacheService) {}
}
- 缓存服务ts**
import { Injectable } from '@angular/core';
import { CacheArray } from '../models/CacheArray';
@Injectable({
providedIn: 'root'
})
export class CacheService
{
items = new CacheArray<any>();
}
- 缓存. ts**
import { BehaviorSubject, Observable } from "rxjs";
export class CacheArray<T>
{
data$ = new BehaviorSubject<T[]>([]);
load(obs: Observable<T[]>)
{
obs.subscribe((items: T[]) => {
this.data$.next(items);
});
}
}
- 自定义选择.组件. ts**
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'app-custom-select',
templateUrl: './custom-select.component.html',
styleUrls: ['./custom-select.component.scss']
})
export class CustomSelectComponent
{
@Input()
options: any[] = [];
}
我希望不会抛出错误
1条答案
按热度按时间dxxyhpgq1#
BehaviorSubject是一个为所有订阅者分配最新值的主体,当我们创建行为对象时,我们也必须为对象分配初始值。
因此,如果此错误类似于您的初始值是某个
any[]
,并且您尝试在更新对象时分配null
值,则可能出现此错误。如果在BehaviourSubject中赋值之前添加检查,则可能会解决错误