Если вы не хотите добавлять входной параметр readonly
в свои пользовательские элементы управления, тогда вам потребуется служба или непрозрачный токен, который каждый из элементов управления получает из своего конструктора, чтобы определить, будет ли элемент управления доступен только для чтения или нет..
Для непрозрачного токена вам нужно будет указать логическое значение в корне приложения, а затем в любое время, когда вы захотите его изменить, вы должны будете повторно предоставить.
Сервис ( Demo )
Если вы хотите иметь возможность выключать значение readonly при выключении, вам необходимо использовать службу.
readonly.service.ts
@Injectable()
export class ReadonlyService {
public readonly = false;
}
readonly.component.ts
@Component({
selector: 'app-readonly',
templateUrl: './readonly.component.html',
providers: [ReadonlyService],
})
export class ReadonlyComponent implements OnInit {
constructor(public readonlyService: ReadonlyService) { }
ngOnInit() {
this.readonlyService.readonly = true;
}
}
customInput.component.ts
@Input() public value: any;
constructor(public readonlyService: ReadonlyService) { }
customInput.component.html
<ng-container *ngIf="!readonlyService.readonly; else readonlyView">
<input placeholder="Enter a value" [(ngModel)]="value">
</ng-container>
<ng-template #readonlyView>
Your readonly value is: {{value}}
</ng-template>