#angular #clipboard
Вопрос:
Простая копия буфера обмена работает, пока я не переместил ее в подписку
Работает
copyStuff() {
this.clipboard.copy('xxxxxxxx');
}
Не работает
copyStuff() {
this.service.getText()
.subscribe({
next: () => {
this.clipboard.copy('xxxxxxxx');
console.log('here')
}
})
}
Есть идеи, как это исправить? Я уже пробовал setTimeout и var that = это.
К сожалению, за пределами моего проекта все работает так, как и ожидалось.
https://stackblitz.com/edit/angular-hs66nf?file=src/app/cdk-clipboard-overview-example.ts
Но в моем проекте мне нужно нажать кнопку 3 раза(так что 3 запроса), чтобы скопировать текст. Щелчок один или два раза не работает.
Комментарии:
1. Что такое буфер обмена? Вы используете угловой CDK или что? Простое воспроизведение было бы здорово.
2. Да, угловой cdk, импортируйте { буфер обмена } из «@угловой/cdk/буфер обмена»;
Ответ №1:
Ну, каким-то образом страница теряла фокус, и я думаю, что буфер обмена cdk не выходил с ошибкой. Я переключился на навигатор.буфер обмена.writeText, и это вышло с ошибкой.
Прежде чем текст был готов к копированию, я теперь перефокусировал нажатую кнопку.
copySomething(ref: MatButton) {
this.service.get(user._id).subscribe(
{
next: resp => {
ref.focus();
navigator.clipboard.writeText(resp.text)
.then().catch(e => console.error(e));
this.notifyService.notify(Copied!', 3000);
}
}
)
}