这是角度属性指令的一个例子。@HostListener
未在类中导入。
import { Directive, ElementRef, HostBinding, Renderer2 } from "@angular/core";
@Directive({
selector: "[appDropdown]",
})
export class DropdownDirective {
constructor(
private readonly elementRef: ElementRef,
private readonly renderer2: Renderer2,
) {}
@HostBinding("class.open") isOpen = false;
@HostListener("click")
toggle() {
const element = this.elementRef.nativeElement;
const isOpen = element.classList.contains("open");
// element.classList.toggle("open", !isOpen);
if (isOpen) {
this.renderer2.removeClass(element, "open");
return;
}
this.renderer2.addClass(element, "open");
this.isOpen = !this.isOpen;
}
}
我从 lsp quik fix 中得到了几个选择。如何使用一些快捷方式应用 lsp quick fix?
答案1
在 LSP 中,他们称之为“代码操作”。他们的文件:
代码操作是“快速修复”和“重构”的总称。它们是更改文件(或多个文件)以解决诊断或应用标准重构技术的操作。例如,将代码块提取到单独的方法中通常称为“提取方法”,是一种“重构”。而“添加缺少的分号”将解决警告缺少分号的诊断。
您可以通过以下方式设置快捷方式:
- 打开
Preferences: LSP Key Bindings
(ctrl+shift+p,LSP 键绑定) - 搜索
Run Code Action
,将块复制到右侧面板,然后取消注释 - 指定一个快捷方式。我选择了
ctrl+.
,它模仿 VSCode:
// Run Code Action
{
"keys": ["ctrl+."],
"command": "lsp_code_actions",
"context": [{"key": "lsp.session_with_capability", "operand": "codeActionProvider"}]
},