You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ngx-clipboard v7.0.6时遇Token DOCUMENT无提供者错误求助

解决ngx-clipboard v7.0.6中"No provider for Token DOCUMENT!"错误

嘿,我来帮你搞定这个依赖注入的问题!你的错误根源在于对ClipboardService的注册和导入方式不对,一步步来修正:

1. 别手动把ClipboardService加到providers里

ClipboardModule本身已经在内部配置好了ClipboardService的提供者,你不需要在模块的providers数组里手动添加它——手动注册会覆盖模块的默认配置,导致DOCUMENT这类依赖没法被正确注入。

2. 用正确的路径导入ClipboardService

别从ngx-clipboard/src导入服务,直接从ngx-clipboard包根目录导入就行,这样才能用到模块提供的、配置好所有依赖的服务实例。

3. 确认DOCUMENT的依赖配置没问题

DOCUMENT令牌来自@angular/common,你的模块已经导入了CommonModule,这部分是OK的,错误的核心还是前面的手动注册服务导致的。

修正后的模块代码

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { ReactiveFormsModule } from '@angular/forms';
import { ClipboardModule } from 'ngx-clipboard';

@NgModule({
  imports: [
    CommonModule,
    ClipboardModule,
    BrowserModule,
    RouterModule,
    ReactiveFormsModule
  ],
  declarations: [],
  // 移除这里手动添加的ClipboardService
  providers: []
})
export class MyModule {}

修正后的组件代码

import { Renderer } from '@angular/core';
// 从正确的包路径导入服务
import { ClipboardService } from 'ngx-clipboard';

@Component({
  selector: 'app-my',
  templateUrl: '../tmp.html',
  styleUrls: ['../tmp.css']
})
export class MyComponent {
  constructor(
    private renderer: Renderer,
    private clipboardService: ClipboardService
  ) {}

  copy(text) {
    this.clipboardService.copyFromContent(text, this.renderer);
  }
}

另外提个小建议:如果你的Angular版本比较新,Renderer已经被Renderer2替代了,建议换成Renderer2,不过这和当前的错误无关,只是个优化点~

按照上面的修改后,DOCUMENT的依赖注入问题应该就能解决了,因为ClipboardModule会正确处理所有需要的依赖项。

内容的提问来源于stack exchange,提问作者Mike Andriyash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:06