Ожидаемое поведение:
У меня есть канал, который принимает объект и тип, и он возвращает переменную этого объекта, в зависимости от того, какой тип. Я хочу запомнить эту функцию, поскольку она всегда должна возвращать одно и то же значение с одинаковыми параметрами. Канал должен возвращать строку из нескольких связанных сущностей.
Наблюдаемое поведение:
Выдается ошибка: 1007 *. Я использую этот метод в методе, который запоминается.
Код:
export class LinkCountPipe implements PipeTransform {
public transform(linkCount: LinkCount, type: EntityType, via: EntityType): string {
const memoGetLinkCount = _.memoize(this.getLinkCount);
const result = memoGetLinkCount(linkCount, type, via);
return result ? result.toString() : undefined;
}
public getLinkCount(linkCount: LinkCount, type: EntityType, via: EntityType): number {
const someType = via ? via : this.getDefaultEntityTypeForLinkedEntities(type);
switch (someType) {
case EntityType.APPLICATION:
return linkCount.nbApplications;
case EntityType.ENTITLEMENT:
return linkCount.nbEntitlements;
case EntityType.PERMISSION:
return linkCount.nbPermissions;
case EntityType.ROLE:
return linkCount.nbRoles;
case EntityType.USER:
return linkCount.nbUsers;
}
}
public getDefaultEntityTypeForLinkedEntities(type: EntityType) {
return DatatableSettings.getDefaultEntityTypeForLinkedEntities(type);
}
}
Пояснение:
Я использую сущности в приложении. Каждый объект связан с другими типами объектов (у меня есть пользователи, роли, разрешения и т. Д.). Каждый объект сущности содержит объект linkCount, который выбирается с сервера, и он содержит, например, для пользователя его связанные роли, права и приложения. В моем HTML я использую: element.linkCount | linkcount: type : via
. Чистая труба linkcount используется для лучшей производительности. Что он должен сделать, это следующее: он принимает объект linkCount объекта, передает тип объекта (например, пользователя), и через (это необязательно, он используется, чтобы показать что-то еще в таблице данных, чем связанные сущности по умолчанию. Например: пользователь может создавать данные и показывать связанные разрешения вместо ролей). Затем он просто возвращает правильную переменную объекта linkCount в соответствии с типом.