复选框从对象的异步数组与对象的@input数组构建

时间:2019-01-07 12:40:54

标签: angular angular6

我尝试创建复选框的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进行了检查),但我的所有复选框仍未选中。

有什么原因吗?

0 个答案:

没有答案