无法读取未定义的属性“nativeElement” - ngAfterViewInit

2023-12-05

我正在尝试使用添加“剪贴板”指令这个例子。该示例现在已经过时,因此我必须更新它获取 nativeElement 的方式。

我收到错误

无法读取未定义的属性“nativeElement”

我在代码中用

剪贴板.directive.js

import {Directive,ElementRef,Input,Output,EventEmitter, ViewChild, AfterViewInit} from "@angular/core";
import Clipboard from "clipboard";

@Directive({
  selector: "[clipboard]"
})
export class ClipboardDirective implements AfterViewInit {
  clipboard: Clipboard;

   @Input("clipboard")
   elt:ElementRef;

  @ViewChild("bar") el;

  @Output()
  clipboardSuccess:EventEmitter<any> = new EventEmitter();

  @Output()
  clipboardError:EventEmitter<any> = new EventEmitter();

  constructor(private eltRef:ElementRef) {
  }

  ngAfterViewInit() {
    this.clipboard = new Clipboard(this.el.nativeElement, {   <======error here
      target: () => {
        return this.elt;
      }
    } as any);

    this.clipboard.on("success", (e) => {
      this.clipboardSuccess.emit();
    });

    this.clipboard.on("error", (e) => {
      this.clipboardError.emit();
    });
  }

  ngOnDestroy() {
    if (this.clipboard) {
      this.clipboard.destroy();
    }
  }
}

html

<div  class="website" *ngIf="xxx.website !== undefined"><a #foo href="{{formatUrl(xxx.website)}}" target="_blank" (click)="someclickmethod()">{{xxx.website}}</a></div>
                                        <button #bar [clipboard]="foo" (clipboardSuccess)="onSuccess()">Copy</button>

我该如何摆脱这个错误?

更新为不使用 AfterViewInit 因为它不是视图...相同的错误:

@Directive({
  selector: "[clipboard]"
})
export class ClipboardDirective implements OnInit {
  clipboard: Clipboard;

   @Input("clipboard")
   elt:ElementRef;

  @ViewChild("bar") el;

  @Output()
  clipboardSuccess:EventEmitter<any> = new EventEmitter();

  @Output()
  clipboardError:EventEmitter<any> = new EventEmitter();

  constructor(private eltRef:ElementRef) {
  }

  ngOnInit() {
    this.clipboard = new Clipboard(this.el.nativeElement, {
      target: () => {
        return this.elt;
      }
    } as any);

我想我不需要使用@viewChild,因为它不是一个组件,但我不确定如何填充el or eltRef. el只是用来替换的eltRef因为我无法填充eltRef.


你的名字ElementRef作为 eltRef 但尝试使用this.el in ngAfterViewInit。您需要使用相同的名称。

这会起作用:

constructor(private el:ElementRef) {
}

ngAfterViewInit() {
  this.clipboard = new Clipboard(this.el.nativeElement, { 
  target: () => {
    return this.elt;
  }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法读取未定义的属性“nativeElement” - ngAfterViewInit 的相关文章

  • 无法读取未定义的属性“搜索”

    我正在尝试制作一个使用 YouTube API 的脚本 我输入了一个关键字 youtube api 找到视频 gt 脚本获取第一个结果并返回 VideoID 现在我的问题是 当我按下提交按钮时 搜索功能不会被触发 有谁知道这可能是什么原因
  • Angular7:NullInjectorError:没有 FormGroup 的提供者

    我真的很沮丧 因为我不知道发生了什么 今天早上一切正常 就在我进行一些更改以将 ReactiveForm 中的 2 个表单合并在一起之前 现在我在浏览器中收到以下错误 错误 StaticInjectorError AppModule For
  • 在 Typescript 中隐式创建一个元组

    有没有一种方法无需类型提示即可在 Typescript 中创建元组 如果我只是这样做 const tuple 1 2 元组的类型number 我能得到的最接近的单线是 const tuple number number 1 2 我错过了什么
  • 我可以在元标记中使用 HTML 字符实体吗?

    我有一个有两种语言的网站 英语和中文 在使用 UTF 8 字符集的英文主页中 我有 例如 这出现在搜索结果中 我想将其更改为 在哪里 20013 25991 是 中文 的 ISO 实体 搜索结果中会显示为 中文 吗 我无法将 中文 直接粘贴
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • 引导导航栏菜单与文本重叠

    我使用最新版本的引导程序 当我调整屏幕浏览器的大小时 使用小切换按钮下拉导航栏时 导航栏会重叠页面上的文本 而不是向下推页面内容 我已经多次研究过这个问题 我尝试将 padding bottom 放在导航栏上 将 padding top 放
  • 在 React 中切换 css 类

    如何使用布尔值切换 React 中元素上 css 类的存在 在 Angular 2 中我可以这样做 class red isRed 如何在 React 中做熟悉的事情 在 React 中 元素使用如下语法获取它们的类 div div 但请注
  • 角度 2 通道数组到自定义验证器(模板驱动形式)

    我需要将一个对象数组传递给 a2 自定义验证器 然后我想根据该数组中的记录验证模板驱动表单字段的值 但是我无法检索验证器内的对象 我唯一能看到的是它的名称作为字符串 如有任何帮助 我们将不胜感激
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 带纱线的 Angular CLI

    如何将 Angular Cli v6 0 3 的包管理器更改为yarn 我试过 ng set global packageManager yarn 但 Angular 说 get set 已被弃用 取而代之的是 config 命令 ng c
  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • @media语法/可能的组合

    我见过其中一些 media print media screen handheld print projection media all media all and property value media screen and prope
  • 为什么我的淘汰单选按钮在另一个具有点击绑定的元素内时会失败?

    我有一个单选按钮列表 我想要点击 li 他们还检查单选按钮 这一切都有效 直到我放了一个name单选元素上的属性 然后我的代码停止工作 我的代码如下所示 ul li li ul li
  • Angular 2 和 TypeScript 的承诺

    我正在尝试使用routerCanDeactivate我的应用程序中的组件的函数 简单的使用方法如下 routerCanDeactivate return confirm Are you sure you want to leave this
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 网站的主体和元素固定在 980px 宽度上,不会缩小

    我试图在 Rails 应用程序顶部启动前端 仅 HTML CSS 页面 但在使用 320px 视口时遇到问题 有些元素不会按比例缩小 我不明白为什么 我已经完成了检查元素 为各种元素提供了max width 100 and or width
  • 图像背景不透明度不影响边框

    如何设置背景不透明度而不影响边框线不透明度 我找到的解决方案没有帮助 div class selected img src assets img image product 1 thumbnail jpg alt product 1 thu
  • 如何使用 Angular CLI 在特定文件夹中生成组件?

    我将 Angular 4 与 Angular CLI 结合使用 并且可以使用以下命令创建一个新组件 E HiddenWords gt ng generate component plainsight 但我需要在 plainsight 中生成
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea

随机推荐

  • 从 dask 中具有多个值的列创建虚拟对象

    我的问题与此主题类似从 pandas 中具有多个值的列创建虚拟对象 目标 我想在下面产生类似的结果 但使用 dask 在熊猫中 import pandas as pd df pd DataFrame fruit Banana Apple D
  • 简单的按钮点击连接到Python函数

    我有一个非常简单的 Qml Python 应用程序 其中有 StackView 中的一些内容 第一页包含一个简单的按钮 我的问题是 Qml 和 Python 之间的所有内容都仅通过信号工作吗 或者按钮可以直接从 python 脚本单击触发
  • 合并两个表/将值连接到单列中

    我有两个表 表 A 保存主产品数据 表 B 保存子产品数据 当表 A 只有一个不同的值时 我想更新表 A 以保存表 B 中相同列的相同值 如果不同计数大于一 我想用逗号连接列 除了键列名称之外 这些表具有相同的列 是否可以编写动态 SQL
  • Python正则表达式将每个匹配替换为自身加上新行

    我有一个很长的正则表达式 有很多交替 我希望能够将正则表达式中的每个匹配替换为自身 后跟新行 n 使用 re sub 最有效的方法是什么 这是一个简单的例子 s I want to be able to replace many words
  • 将 CSV 导入 R 时如何生成具有 CSV 名称的列?

    我有大量 csv 文件想要读入 R csv 中的所有列标题都是相同的 起初我以为我需要根据文件名列表创建一个循环 但搜索后我发现了一种更快的方法 这会正确读取并组合所有 csv 据我所知 filenames lt list files pa
  • CSS - 属性前的“#”符号[重复]

    这个问题在这里已经有答案了 可能的重复 以井号 开头的 CSS 属性有效吗 我尝试在 Stackoverflow com 上查找 但找不到与我的问题相关的任何内容 尽管雅虎上有答案 但开放网络也好不到哪去 回答 答案 除了 用于 ID 当然
  • 如何使用 perl 将第 n 行写入文件

    我在一个文件中有一个源文本 并正在寻找一个代码 该代码将从该文件中获取第二行 或通常是第 n 行 并打印到单独的文件中 知道如何做到这一点吗 您可以在 Perl 中使用以下命令本地执行此操作触发器运算符和特殊变量 内部使用 其中包含当前行号
  • Haskell 中类型别名的 Derive Eq 和 Show

    我有以下类型别名 data Bindable Const Value Variable Location Func Function Proc deriving Eq Show type Function Argument gt Store
  • Windows 中是否有屏幕调整大小事件

    我有一个简单的应用程序 当我连接到扩展坞时 它会更改数字锁定状态 问题是我不知道如何检测第二个显示器何时连接 和断开连接 因此我只在连接后设置状态 所以我正在寻找 Screen Resize 事件或类似事件 我正在使用 Windows 7
  • 如何使用 makefile 激活 virtualenv?

    在我的 makefile 的顶部有这样一行 SHELL bin sh 大多数命令都需要它 但是 我还想有一个 make 命令来激活我的虚拟环境 它位于不同的路径上 这是我为其编写的代码 activate source envs APP bi
  • Facebook 应用程序被重定向出画布视图

    我正在使用 iframe 从我的服务器渲染我的应用程序 问题是 一旦我单击应用程序中的链接 我就会被重定向到我的服务器 我的意思是 我在画布页面上停留了一秒钟 然后突然我不再在 Facebook 网站上的 iframe 中查看它 而是重定向
  • 三元运算符 VB 与 C#:为什么将 Nothing 解析为零? [复制]

    这个问题在这里已经有答案了 我只是搬起石头砸自己的脚 想知道是否有真正的原因导致这种情况成为可能 不管怎样 这个问题可以留下来 以方便未来的足射手 假设我们在 vb net 中有一个可为空的值 Dim i as Integer 我们想根据条
  • 返回字符串的 Junit 测试函数

    我在类中有一个函数 public String covertToLowerCase String sliceName sliceName sliceName trim toLowerCase sliceName sliceName repl
  • 在 pandas 数据帧上创建滚动自定义 EWMA

    我正在尝试在 df 的最后 13 个值上创建一个滚动 EWMA 其衰减 1 ln 2 3 如下 factor Out 36 EWMA 0 0 043 1 0 056 2 0 072 3 0 094 4 0 122 5 0 159 6 0 2
  • 识别给定应用程序池的 w3wp System.Diagnostics.Process

    我的服务器上运行的网站很少 我的应用程序中有一个 诊断 页面 显示内存量对于当前进程 非常有用 现在这个应用程序已 链接 到另一个应用程序 我希望我的诊断页面能够显示另一个 w3wp 进程的内存量 为了获取内存量 我使用一个简单的代码 va
  • Webapi odata 通过实体框架功能进行扩展

    我有一个产品 odata 控制器和一个产品类别 odata 控制器 它们都使用实体框架实体 并具有用于 odata 扩展的导航方法 两者的扩展工作正常 现在 我在实体框架中添加了一个存储过程来操作从数据库返回的数据 并仍然返回 产品 记录
  • 何时使用 Task.Run、何时使用 async-await 以及何时组合使用它们

    我读过很多帖子 但仍然无法区分所有这些 我所能理解的是 Task Run 将调用后台线程 async await 是异步编程 Task Run 是否意味着后台线程将表现为阻塞线程 尝试从互联网下载多个大图像 我应该如何组合使用这些关键字以及
  • Electron:初始化前无法访问对话框

    我有一个渲染器文件 其唯一目的是打开一个对话框以从中选择文件 我已经尝试重写这个很多次了 每次我都会遇到不同的错误 我究竟做错了什么 确切的代码 const ipcRenderer shell remote require electron
  • AFNetworking (AFJSONRequestOperation) 转换为 AFHTTPClient

    我有以下运行良好的代码 但我需要对其进行更多控制 尤其需要在 0 9 中开始使用 Reachability 代码 NSString urlString NSString stringWithFormat http example com A
  • 无法读取未定义的属性“nativeElement” - ngAfterViewInit

    我正在尝试使用添加 剪贴板 指令这个例子 该示例现在已经过时 因此我必须更新它获取 nativeElement 的方式 我收到错误 无法读取未定义的属性 nativeElement 我在代码中用 剪贴板 directive js impor