- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Angular 和 .net Core 还很陌生。我正在编写代码来执行 CRUD 操作。我的一个获取项目组件中有以下代码。
import { Component } from '@angular/core';
import { ProjectDetailService } from '../services/projectdetail.service';
import { AllItProject } from '../../Models/allitproject';
@Component({
selector: 'app-fetch-project',
templateUrl: './fetch-project.component.html',
styleUrls: ['./fetch-project.component.css']
})
export class FetchProjectComponent {
public projectList: AllItProject[];
constructor(private _projectService: ProjectDetailService) {
this.getProjectDetails();
}
getProjectDetails() {
this._projectService.getProjectDetails().subscribe(
(data: AllItProject[]) => this.projectList = data
);
}
我的 Projectdetail.service 组件有以下类:
import { Injectable, Inject } from '@angular/core';
import { HttpClient, HttpInterceptor } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { AllItProject } from '../../models/allitproject';
@Injectable({
providedIn: 'root'
})
export class ProjectDetailService {
myAppUrl = '';
constructor(private _http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
this.myAppUrl = baseUrl;
}
getProjectDetails() {
return this._http.get(this.myAppUrl + 'api/AllItProjectsLists/Index').pipe(map(
response => {
return response;
}));
}
当我运行该项目时,我会看到一个左侧菜单,上面写着 Fetch employee。当我点击fetch-employee,我收到错误消息:
ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[BASE_URL]:
StaticInjectorError(Platform: core)[BASE_URL]:
NullInjectorError: No provider for BASE_URL!
NullInjectorError: StaticInjectorError(AppModule)[BASE_URL]:
StaticInjectorError(Platform: core)[BASE_URL]:
NullInjectorError: No provider for BASE_URL!
at NullInjector.get (vendor.js:39059)
at resolveToken (vendor.js:53976)
at tryResolveToken (vendor.js:53902)
at StaticInjector.get (vendor.js:53752)
at resolveToken (vendor.js:53976)
at tryResolveToken (vendor.js:53902)
at StaticInjector.get (vendor.js:53752)
at resolveNgModuleDep (vendor.js:64939)
at NgModuleRef_.get (vendor.js:66005)
at injectInjectorOnly (vendor.js:38938)
at resolvePromise (polyfills.js:4032)
at resolvePromise (polyfills.js:3989)
at polyfills.js:4093
at ZoneDelegate.invokeTask (polyfills.js:3626)
at Object.onInvokeTask (vendor.js:73266)
at ZoneDelegate.invokeTask (polyfills.js:3625)
at Zone.runTask (polyfills.js:3403)
at drainMicroTaskQueue (polyfills.js:3794)
at ZoneTask.invokeTask [as invoke] (polyfills.js:3704)
at invokeTask (polyfills.js:4838)
我尝试调试我的代码,当我点击获取员工菜单项时。我去获取项目组件构造函数,然后进入获取项目组件中的 getProjectDetails() ,我得到了与上面提到的相同的错误。下面是我的 app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { NavMenuComponent } from './nav-menu/nav-menu.component';
import { FetchProjectComponent } from './fetch-project/fetch-project.component';
import { AddProjectComponent } from './add-project/add-project.component';
@NgModule({
declarations: [
AppComponent,
NavMenuComponent,
FetchProjectComponent,
AddProjectComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),
HttpClientModule,
FormsModule,
ReactiveFormsModule,
RouterModule.forRoot([
{ path: 'fetch-project', component: FetchProjectComponent },
{ path: 'register-project', component: AddProjectComponent },
{ path: 'project/edit/:id', component: AddProjectComponent },
])
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
下面是我的 Angular 应用程序结构:
我在我的 main.ts 文件中添加了这个:
export function getBaseUrl() {
return document.getElementsByTagName('base')[0].href;
}
const providers = [
{ provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }
];
我们将不胜感激任何帮助。
最佳答案
BASE_URL
在您的案例中不存在。如果你想要这样 - 创建服务存储它并添加到提供者。
providers: [
{ provide: 'BASE_URL', useFactory: getBaseUrl }
]
提供从元素获取基本 URL 的工厂方法:
export function getBaseUrl() {
return document.getElementsByTagName('base')[0].href;
}
显然你应该在 html 中拥有它:
<base href="/client1/" />
不错的描述: http://www.projectcodify.com/angular-set-base-url-dynamically
关于angular - appModule : StaticInjectorError(AppModule)[BASE_URL]: 中的 NullInjection 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016365/
我仅在 Kitkat 设备上遇到此崩溃。我的 logcat 在下面。在 getViewModel 处崩溃 Fatal Exception: java.lang.NoClassDefFoundError
我对 Angular 和 .net Core 还很陌生。我正在编写代码来执行 CRUD 操作。我的一个获取项目组件中有以下代码。 import { Component } from '@angular
我对 Angular 和 .net Core 还很陌生。我正在编写代码来执行 CRUD 操作。我的一个获取项目组件中有以下代码。 import { Component } from '@angular
我已经实现了一个拦截器来添加我可以制作 seucred api 的授权 header 。当我在任何应用程序模块中注入(inject)此服务时出现错误//"无法实例化循环依赖!HttpClient ("
I have added this code into my app.module.ts providers: [ AppConfigService, {
我已经创建了一个类似于 Angular 文档中的突出显示指令,但是我无法在 appmodule 中导入的其他模块中使用它。以下是我的 appmodule.ts 文件: import { Browser
我正在阅读有关模块的 Angular 文档,寻找不鼓励在 AppModule 中导入 SharedModule 的行。 我没有找到任何关于此的内容,只是一个 GitHub 问题,指出最好不要导入它。然
我正在尝试将 AngularDart 应用程序放在一起,并且我会在文档中来回切换。 在 AngularDart 官方网站架构页面中,它谈到了最重要的 AppModule AngularDart Arc
我正在开发 Angular 6 项目。自最近几天以来,我陷入了以下问题。请指导。 我的程序基于惰性路由并且也有动态路由。以下代码是我的app-routing.module.ts: const rou
我一直在使用在线教程并创建了一个“还行”的 SPA 数据输入应用程序。 我可以很好地连接到我的 WEB API,但只构建了一个模型,我的 AppModule 已经有几行了。 我正在考虑并使用当前的方法
Angular 2+ 通过以下方式注册提供者: // @NgModule decorator with its metadata @NgModule({ declarations: [...],
我不明白为什么当我有了新的提供商时,我一次又一次地遇到这个错误。当我有任何其他提供商(如地理定位等)时,我遇到此错误: Error: Uncaught Error: Invalid provider
我才刚刚开始学习如何使用 Angular 2 和 Ionic 3.20.0,但现在面临挑战。我正尝试在我的主页中显示产品图片,但该应用程序抛出此错误 ERROR Error: Uncaught (in
如何从延迟加载的模块访问 AppModule 导入? 我的 Angular 10 应用导入 AngularMaterial 和 NXTranslate 模块 进入 AppModule。 NxTrans
在我的应用程序(独立)中,当我需要从 Guice 获取一些对象实例时,我通常这样做: injector = Guice.createInjector(new AppModule()); instanc
我是 Angular 的新手,我试图在具有以下目录结构的 Angular2 应用程序中分离我的模块。 我在 AppModule 中声明了我的模块和其他组件,但是我在浏览器控制台中收到一个错误 Unex
我最近更新了 2.4.1 版本。 "@angular/common": "~2.4.1", "@angular/compiler": "~2.4.1", "@angular/compiler-cli"
我正在尝试在我的 Angular 6 应用程序中实现延迟加载,我所有的 http 调用都是在 FeatureModule(延迟加载)中进行的,但我仍然必须添加 HttpClientModule 在我的
我已经搜索了很多有关此错误的信息,但没有任何有用的信息,这种错误通常有角度地告诉您缺少提供程序的对象是什么,但是这次它给出了 StaticInjectorError(AppModule)[[objec
我有以下代码 @NgModule({ declarations: [ ... ], imports: [ RoutingModule, SharedModule,
我是一名优秀的程序员,十分优秀!