cdk-drop 不是已知元素

Posted

技术标签:

【中文标题】cdk-drop 不是已知元素【英文标题】:cdk-drop is not a known element 【发布时间】:2019-05-12 17:09:52 【问题描述】:

我正在使用 Angular 7“拖放”的新功能,我按照官方文档中的所有步骤操作:https://material.angular.io/cdk/drag-drop/overview

但我收到此错误: **

未捕获的错误:模板解析错误:“cdk-drop”不是已知的 元素: 1. 如果 'cdk-drop' 是一个 Angular 组件,那么验证它是这个模块的一部分。 2. 如果“cdk-drop”是一个 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“@NgModule.schemas”以禁止显示此消息。

**

这是我的 app.component.html 代码:

<cdk-drop cdkDropList class="example-list" (cdkDropListDropped)="drop($event)">
  <div class="example-box" *ngFor="let movie of movies" cdkDrag>movie 
  </div>
</cdk-drop>

这是我的 app.component.ts 代码:

import  Component  from '@angular/core';
import  CdkDragDrop, moveItemInArray  from '@angular/cdk/drag-drop';

@Component(
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
)
export class AppComponent 
    movies = [
    'Episode I - The Phantom Menace',
    'Episode II - Attack of the Clones',
    'Episode III - Revenge of the Sith',
    'Episode IV - A New Hope',
    'Episode V - The Empire Strikes Back',
    'Episode VI - Return of the Jedi',
    'Episode VII - The Force Awakens',
    'Episode VIII - The Last Jedi'
    ];

    drop(event: CdkDragDrop<string[]>) 
        moveItemInArray(this.movies, event.previousIndex, event.currentIndex);
    

注意:我正在使用 => Angular:7.1.2 &如果我通过 div 更改 cdk-drop html 元素也不起作用:(

【问题讨论】:

你的 NgModule 文件里有什么? NgModule 文件?我没有同名的文件 检查我的答案,好像你忘记了那部分。 【参考方案1】:

您阅读的文档必须是过时的。我关注了一篇博文,遇到了同样的问题。

元素&lt;cdk-drop&gt; 不再存在。改为使用指令 cdkDropList。

当出现奇怪的错误时,请务必先查看最新的文档。

从今天开始,这个例子可以工作https://stackblitz.com/angular/moyomqpeprev?file=app%2Fcdk-drag-drop-sorting-example.html

【讨论】:

【参考方案2】:

你应该在app.module.ts

import DragDropModule from '@angular/cdk/drag-drop';

然后在同一文件的imports 数组(在@NgModule 装饰器内)添加DragDropModule


@angular/material 中也没有导出任何内容,因为cdk-drop 将您的 html 部分更改为:

<div cdkDropList class="example-list" (cdkDropListDropped)="drop($event)">
  <div class="example-box" *ngFor="let movie of movies" cdkDrag>movie</div>
</div>

【讨论】:

我仍然遇到同样的错误,我将 DragDropModule 添加到我的 app.modules.ts 文件中的导入中,还导入了 DragDropModule 在我的 app.component.ts 文件中 @SaidSOUALHI 将其导入app.module.ts 而不是app.component.ts 有两个导入,文件头部的导入和@NgModule 装饰器中的导入数组。你应该两个都做。 是的,我在文件的头部和导入的@NgModule 内部都做了这两个操作 @SaidSOUALHI 切断你的服务器并重新运行。

以上是关于cdk-drop 不是已知元素的主要内容,如果未能解决你的问题,请参考以下文章

元素“Listitem”不是已知元素

未捕获的错误:模板解析错误:'mat-label' 不是已知元素:

角度不是已知的元素错误

自定义角度库组件显示错误“不是已知元素”

组件选择器不是已知元素

Angular:component-name 不是已知元素