Самый простой и полный пример здесь можно найти здесь: https://stackblitz.com/edit/angular-gbenfj
Нам нужен простой компонент, который выполняет 4 вещи в зависимости от пути привязки:
- отображает значение вinput
- добавить i18n
- Скрытие безопасности, когда пользователю не разрешено видеть поле
- Завершение кода на model.us => model.user ...
Мы хотим что-то вроде этого:
<app-input [value]="model.user.name"></qcr-input>
Что в фоновом режиме делает:
<div class="form-group form-material floating" *permission="requiredAuthority">
<input type="text" class="form-control" [value]="value" name="{{value}}"/>
<label class="floating-label">{{label}}</label>
</div>
Разрешение * - это директива, которая не отображает компонент, есливошедший в систему пользователь не имеет такого разрешения.
export class InputComponent implements OnInit {
@Input()
public value: string;
public label: string;
public requiredReadAuthority: string;
ngOnInit() {
let path = // HOW TO GET model.user.name here to be able to do the rest generate requiredAuthority 'model.user.name__READ' AND ge the label for key 'model.user.name'?
// path should be 'model.user.name' here.
this.requiredReadAuthority = this.path + '__READ';
this.label = this.someServiceToGeti18n(this.path);
}
}
Я думаю, что это можно сделать с помощью директив, но информации об этом мало, поскольку речь идет о получении фактической строки на основе углового каркасного кода model.user.name в директиве.
Любая помощь будет отличной!