我尝试创建复选框的html列表,并选中默认值。 我从服务中获取了一个对象数组,并且希望在使用@Input检索到的对象数组之后检查复选框列表。
我的对象组件看起来像:
public class CacheHelper<T> : ICacheHelper<T>
{
private ICacheProvider _cacheProvider;
public CacheHelper(ICacheProvider cacheProvider)
{
_cacheProvider = cacheProvider;
}
public async Task<CacheResponse<T>> GetCacheValueAsync(string key)
{
RedisValue value = await _cacheProvider.GetCacheDatabase().StringGetAsync(key);
if (typeof(T).Equals(typeof(string)))
{
return value.HasValue
? new CacheResponse<T>(value) //I'm getting error here cannot cast type RedisValue to type T
: CacheResponse<T>.NoValue();
}
else
{
T obj = JsonConvert.DeserializeObject<T>(value);
return value.HasValue
? new CacheResponse<T>(obj)
: CacheResponse<T>.NoValue();
}
}
}
编辑:我的export class MyObjectComponent implements OnInit {
@Input() objInput: MyObject[];
constructor(private myObjectService: MyObjectService) {}
myObjects: MyObject[];
ngOnInit(): void {
this.myObjectService.getMyObjects().subscribe(x => this.myObjects= x);
}
isIn(object: myObject, objs: myObject[]) {
let bool = false;
for(var i = 0 ; i < agcs.length ; i++ ){
bool = this.comparer(objs[i], object);
}
return bool;
}
comparer(o1: myObject, o2: myObject): boolean {
return o1 && o2 ? o1.Id === o2.Id : o2 === o2;
}
}
函数错误,我将其更改为以下内容,并解决了我的问题:
isIn()
在我的html中,我
isIn(object: myObject, objs: myObject[]) {
for(var i = 0 ; i < agcs.length ; i++ ){
if(this.comparer(objs[i], object))
return true
}
return false;
}
我也从另一个从服务检索的对象中获取@Input,例如:
<div >
<div class="card-panel" *ngFor=" let obj of myObjects">
<mat-checkbox [checked]="isIn(obj , objInput)">{{obj.Libelle}}</mat-checkbox>
</div>
</div>
<div *ngIf="bareme">
<app-myobj [objInput]="bareme?.MyObject"></app-myobj>
</div>
函数根据需要返回true或false(我已通过console.log进行了检查),但我的所有复选框仍未选中。
有什么原因吗?