У меня есть следующий DIV и кнопку:Angular2, неспособный установить атрибут элемента DOM, скрыт с помощью ngIf?
<div *ngIf="shownOrNot" custom-name="smth" data-x="3" data-y="4"><div>Test</div></div>
<button (click)="showAndSetX()">Show and Change</button>
Допуская shownOrNot = ложь первоначально, когда я нажимаю кнопку, он запускает эту функцию в компоненте:
showAndSetX() {
this.shownOrNot = !this.shownOrNot;
$("[custom-name='smth']").attr('data-x', 5);
console.log($("[custom-name='smth']").attr('data-x'));
}
Проблема заключается в том, когда я сначала нажмите на кнопку, чтобы скрыть div, я вижу, что «3» зарегистрировано, что правильно. Однако, когда я нажимаю на него снова, я вижу «неопределенный». Когда я снова нажимаю на него, я вижу «3».
Как это сделать, чтобы я мог установить атрибут после его отображения? Или есть альтернатива этому?
UPDATE: Я также пробовал его с .data вместо .attr, такое же поведение. Его почти как я должен сделать:
это.shownOrNot =! This.shownOrNot; // вставляем функцию, которая ждет $ ("[custom-name = 'smth']") для фактического рендеринга в DOM перед продолжением выполнения $ ("[custom-name = 'smth']"). Attr ('data -x ', 5);
Вы пытались использовать [$ .data] (https://api.jquery.com/jquery.data/) вместо –
Можете ли вы предоставить образец? – Rolando
'$ (" [custom-name = 'smth'] "). Data ('x', 5);' для установки и '$ (" [custom-name = 'smth'] "). Data ('x '); 'получить –