В конкретном примере, который вы указали, инициализация s не может генерировать исключение. Таким образом, вы можете подумать, что, возможно, его область действия может быть расширена.
Но в целом выражения инициализации могут генерировать исключения. Это не имело бы смысла для переменной, инициатор которой выбрал исключение (или которое было объявлено после другой переменной, где это произошло), чтобы быть в области catch / finally.
Кроме того, пострадает читаемость кода. Правило в C (и последующие языки, включая C ++, Java и C #) просты: области переменных следуют за блоками.
Если вы хотите, чтобы переменная была в области try / catch / finally, но нигде else, затем заверните все это в другой набор фигурных скобок (пустой блок) и объявите переменную перед попыткой.
Таким образом, это может быть не та проблема, которую вы пытаетесь решить, но обычно лучше использовать привязки данных для применения / изменения атрибутов. Внутри вашего класса компонента:
export class AppComponent {
buttonDisabled = false;
toggleDisabled(){
this.buttonDisabled = !this.buttonDisabled;
}
}
и в вашем html:
<button [disabled]='buttonDisabled'>Click Button</button>
<hr>
<button (click)="toggleDisabled()">Click To Disable</button>
Отключенный атрибут на кнопке «Нажать кнопку» будет следовать логической переменной buttonDisabled внутри класса компонента. [ 114]
Получите elementRef и используйте Renderer2 для удаления атрибута (Renderer устарел)
@ViewChild('removeDisabled', {read: ElementRef}) removeDisabled:ElementRef;
constructor(private elementRef:ElementRef,private rendd:Renderer2){
}
removeDisabledfn(){
this.rendd.removeAttribute(this.removeDisabled.nativeElement, 'disabled');
}
и в шаблоне
<button #removeDisabled disabled>Click Button</button>
Я думаю, что вы ищете класс API Renderer2
.
removeAttribute(el: any, name: string, namespace?: string)
метод Angular. Создайте экземпляр класса Renderer2 внутри компонента конструктора.
constructor(
private elementRef: ElementRef,
private renderer: Renderer2){
}
removeDisabledfn(){
this.renderer.removeAttribute(<refrence_of_target_element>, <attribute_name>); // attribute_name in your case --> disabled (as string)
}