Angular 2: Module not found: Error: Can't resolve
Angular 2: Module not found: Error: Can't resolve
我有一个使用 Angular-CLI 创建的简单应用程序,我想重构并将 app.component.ts 代码移动到单独的组件文件中并开始出现严重错误:
Module not found: Error: Can't resolve on './sb/sb.component.html' (
my SBComponent). Under the
这是我拥有的:
app.module:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { SBComponent } from './sb/sb.component'
@NgModule({
declarations: [
AppComponent, SBComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component:
import { Component } from '@angular/core';
import { NgModule,ElementRef, ViewChild, AfterViewInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
}
新组件:
import { Component, OnInit } from '@angular/core';
import { NgModule,ElementRef, ViewChild, AfterViewInit, AfterContentInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'app-sb',
templateUrl: './sb/sb.component.html'
})
export class SBComponent {
}
如有任何帮助,我们将不胜感激!
如果您的组件位于同一目录中,那么您也需要将 templateUrl
指向同一文件夹。方法如下:
@Component({
selector: 'app-sb',
templateUrl: './sb.component.html'
})
当我们为外部 html 和 css 文件使用组件相对路径时,这个问题是众所周知的。绝对路径和相对路径的问题只需在组件中添加元数据ModuleId即可解决
现在 ModuleId 有什么作用? ModuleId包含组件的绝对值URLclass[实际加载模块文件时]
此 ModuleId 值被 Angular 反射过程和 metadata_resolver 组件用来评估之前的完全限定组件路径组件构造
使用起来非常简单。只需在 @Component 装饰器中再添加一个条目即可。完整代码示例如下。
@Component({
moduleId: module.id, // fully resolved filename; defined at module load time
selector: 'app-sb',
templateUrl: 'sb.component.html' //Observe this.
})
export class SBComponent {
}
尝试给出相对路径而不是绝对路径。
它将修复解决方案。
赞:templateUrl = '../employee/employee.html'
在你的 component.ts
我的问题和这里问的一样,我的解决方案大不相同
导致问题的代码:
@Component({
selector : 'app-header',
templateUrl : './header.component.html',
styleUrls : ['']
})
此处通过更改:
styleUrls : ['']
对此:
styles : ['']
帮助我删除了模块未找到错误,认为有人可能会因为这个愚蠢的错误而收到此错误,这就是分享我的解决方案的原因
好的,以上解决方案非常好,必须使用它来查看它是否可以解决您的问题。但是,如果您设置了模板 属性,则会显示相同的错误消息。当我使用 ng g c 创建组件然后它有 templateUrl 但我在 templateUrl 中编写一些测试 html 时,我遇到了问题,认为它是模板。希望这有帮助
一位 React 开发人员向我展示了一些东西。
转到你的 tsconfig.json 并在外花括号 {} 里面你有所有 json 选项和代码,把这个
"include": [
"src/app"
]
//if all your components files are in app, you can do this so as to make importation easy. You can just call the component. It should work for you.
从这里您可以轻松地使用没有太多斜杠/和点的导入。就像我的代码一样,
import { Component, OnInit, Input, Injectable, NgModule } from '@angular/core';
import { products } from "product";
//instead of import { products } from ".../../product"; which will still import but might show error.
import { FormsModule } from '@angular/forms';
@Component({
selector: 'app-product-list',
templateUrl: './product-list.component.html',
styleUrls: ['./product-list.component.scss'],
providers: [
FormsModule
]
})
export class ProductListComponent implements OnInit {
products = products;
onNotify() {
window.alert("You will be notified when the product goes on discount")
}
share() {
window.alert('The Product Has Been Added To Your Cart')
}
constructor() {
}
ngOnInit(): void {
}
}
我有一个使用 Angular-CLI 创建的简单应用程序,我想重构并将 app.component.ts 代码移动到单独的组件文件中并开始出现严重错误:
Module not found: Error: Can't resolve on './sb/sb.component.html' ( my SBComponent). Under the
这是我拥有的:
app.module:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { SBComponent } from './sb/sb.component'
@NgModule({
declarations: [
AppComponent, SBComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component:
import { Component } from '@angular/core';
import { NgModule,ElementRef, ViewChild, AfterViewInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
}
新组件:
import { Component, OnInit } from '@angular/core';
import { NgModule,ElementRef, ViewChild, AfterViewInit, AfterContentInit} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'app-sb',
templateUrl: './sb/sb.component.html'
})
export class SBComponent {
}
如有任何帮助,我们将不胜感激!
如果您的组件位于同一目录中,那么您也需要将 templateUrl
指向同一文件夹。方法如下:
@Component({
selector: 'app-sb',
templateUrl: './sb.component.html'
})
当我们为外部 html 和 css 文件使用组件相对路径时,这个问题是众所周知的。绝对路径和相对路径的问题只需在组件中添加元数据ModuleId即可解决
现在 ModuleId 有什么作用? ModuleId包含组件的绝对值URLclass[实际加载模块文件时]
此 ModuleId 值被 Angular 反射过程和 metadata_resolver 组件用来评估之前的完全限定组件路径组件构造
使用起来非常简单。只需在 @Component 装饰器中再添加一个条目即可。完整代码示例如下。
@Component({
moduleId: module.id, // fully resolved filename; defined at module load time
selector: 'app-sb',
templateUrl: 'sb.component.html' //Observe this.
})
export class SBComponent {
}
尝试给出相对路径而不是绝对路径。
它将修复解决方案。
赞:templateUrl = '../employee/employee.html'
在你的 component.ts
我的问题和这里问的一样,我的解决方案大不相同
导致问题的代码:
@Component({
selector : 'app-header',
templateUrl : './header.component.html',
styleUrls : ['']
})
此处通过更改:
styleUrls : ['']
对此:
styles : ['']
帮助我删除了模块未找到错误,认为有人可能会因为这个愚蠢的错误而收到此错误,这就是分享我的解决方案的原因
好的,以上解决方案非常好,必须使用它来查看它是否可以解决您的问题。但是,如果您设置了模板 属性,则会显示相同的错误消息。当我使用 ng g c 创建组件然后它有 templateUrl 但我在 templateUrl 中编写一些测试 html 时,我遇到了问题,认为它是模板。希望这有帮助
一位 React 开发人员向我展示了一些东西。 转到你的 tsconfig.json 并在外花括号 {} 里面你有所有 json 选项和代码,把这个
"include": [
"src/app"
]
//if all your components files are in app, you can do this so as to make importation easy. You can just call the component. It should work for you.
从这里您可以轻松地使用没有太多斜杠/和点的导入。就像我的代码一样,
import { Component, OnInit, Input, Injectable, NgModule } from '@angular/core';
import { products } from "product";
//instead of import { products } from ".../../product"; which will still import but might show error.
import { FormsModule } from '@angular/forms';
@Component({
selector: 'app-product-list',
templateUrl: './product-list.component.html',
styleUrls: ['./product-list.component.scss'],
providers: [
FormsModule
]
})
export class ProductListComponent implements OnInit {
products = products;
onNotify() {
window.alert("You will be notified when the product goes on discount")
}
share() {
window.alert('The Product Has Been Added To Your Cart')
}
constructor() {
}
ngOnInit(): void {
}
}