gpt4 book ai didi

select - 使用参数自定义Select()

转载 作者:行者123 更新时间:2023-12-01 09:26:28 24 4
gpt4 key购买 nike

更新

从@NGXS v3.1开始,他们终于在@Selector()中引入了参数。

https://www.ngxs.io/concepts/select#lazy-selectors

DOCS中的示例

首先,定义@Selector“ pandas

@State<string[]>({
name: 'animals',
defaults: []
})

@Injectable()
export class ZooState {
@Selector()
static pandas(state: string[]) {
return (type: string) => {
return state.filter(s => s.indexOf('panda') > -1).filter(s => s.indexOf(type) > -1);
};
}
}

然后,您只需在“.ts”文件中调用它
import { Store } from '@ngxs/store';
import { map } from 'rxjs/operators';

@Component({ ... })
export class ZooComponent {
babyPandas$: Observable<string[]>;

constructor(private store: Store) {
this.babyPandas$ = this.store
.select(ZooState.pandas)
.pipe(map(filterFn => filterFn('baby')));
}
}

*来自旧帖子*

我正在尝试创建一个自定义@Select(),以便能够向下钻取特定的树并动态返回值。获取未定义或未定义(正在执行)

user.component.ts
const location = 'new york'
@Select(state => UserState.getUserLocationSlots(state, location)) slots$;

user.state.ts
@Selector() 
static getUserLocationSlots(state: UserStateModel, location: any) {
console.log(state);
console.log(location); // <-- expecting 'new york', but getting undefined
}

最佳答案

我认为不可能将参数传递给ngxs v2中的@Selector()装饰函数。那就太好了。

存在此feature request的票证。

另外,我认为您没有正确使用@Selector()。我应该是这样的(因此,无法传递参数):

@Select(UserState.getUserLocationSlots) slots$

请参阅 docs

注意:我不是ngxs专家...这只是基于我现在的理解。

关于select - 使用参数自定义Select(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com