Angular2:将服务器端配置注入服务

2023-12-07

我在 ASP.NET Core 中使用 Angular 2.0.0 和 TypeScript。我的目标是根据服务器端变量在我的应用程序中创建 AppConfig 服务。在其他几个答案的帮助下,我能够创建以下代码:

索引.cshtml

<app>
    <i class="fa fa-spin fa-5x fa-spinner"></i>
</app>

<script>
    System.import('/app/main').then((m) => {
        var config = {
            apiUrl: @options.ApiServerUrl
        };

        m.RunApplication(config);
    }, console.error.bind(console));
</script>

应用程序配置.ts

import { Injectable } from "@angular/core";

@Injectable()
export class AppConfig {
    apiUrl: string;
}

main.ts

import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";

import { AppModule } from "./app.module";
import { AppConfig } from "./app.config";

export function RunApplication(config: Object) {

    var appConfig = new AppConfig();
    appConfig.apiUrl = config["apiUrl"];

    console.log('Created config: ', appConfig);

    platformBrowserDynamic()
        .bootstrapModule(AppModule, [{ providers: [{ provide: AppConfig, useValue: appConfig }] }])
        .catch(err => console.error(err));
}

应用程序模块.ts

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { HttpModule } from "@angular/http";
import { AppRouting, AppRoutingProviders } from "./app.routes";
import { AppConfig } from "./app.config";
import { AppComponent } from "./app.component";
import { DashboardComponent } from "./dashboard/dashboard.component";
import { DashboardService } from "./dashboard/dashboard.service";

@NgModule({
    declarations: [
        AppComponent,
        DashboardComponent
    ],
    imports: [
        BrowserModule,
        HttpModule,
        AppRouting
    ],
    providers: [
        AppRoutingProviders,
        AppConfig,
        DashboardService
    ],
    bootstrap: [AppComponent],
})
export class AppModule { }

仪表板.service.ts

import { Http } from "@angular/http";
import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Rx";
import "rxjs/add/operator/map";
import { AppConfig } from "../app.config";

@Injectable()
export class DashboardService {

    constructor(private appConfig: AppConfig, private http: Http) {
        console.log('Injected config: ', appConfig);
        console.log('Injected apiUrl: ', appConfig.apiUrl);
    }
}

Chrome 控制台的输出

Outpup from Chrome console

正如您所看到的,由于某种原因创建并注入AppConfig不一样,并且apiUrl值没有出现在DashboardService。我怀疑错误就在这里:

bootstrapModule(AppModule, [{ providers: [{ provide: AppConfig, useValue: appConfig }] }])

但我对 Angular2 还很陌生,不知道如何修复它。你能指点我问题出在哪里吗?


Your AppConfig提供者在@NgModule()提供者传递给的影子bootstrapModule()

With 如何将从后端渲染的参数传递给 angular2 bootstrap 方法你应该得到你想要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2:将服务器端配置注入服务 的相关文章

  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • Angular2 - 更改位置而不触发路线

    我有一个使用服务来加载项目列表的视图 我总是只显示一个项目 并使用 gt 按钮在项目之间移动 有没有办法在不触发 Angular 路由系统的情况下更改浏览器地址栏中的地址并将记录添加到浏览器历史记录中 我知道如果我使用 location g
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • 为什么 TypeScript 在接口被重写时不发出警告

    interface ClockInterface setTime d Date class Clock implements ClockInterface I would expect this to raise a compile err
  • 角度分割列表

    我有一个看起来像这样的列表 A B C 是否有任何简单的方法 而无需创建一个函数 将其展平为一个看起来像这样的数组 A B C 我搜索了 SO 但没有找到任何带有打字稿方法的内容 Thanks 编辑 A B C 是相同类型 看来您正在寻找的
  • Angular 2 兄弟组件通信

    我有一个列表组件 当在 ListComponent 中单击某个项目时 该项目的详细信息应显示在 DetailComponent 中 两者同时出现在屏幕上 因此不涉及路由 如何告诉详细组件列表组件中的哪个项目被单击 我考虑过向父级 AppCo
  • 窗口不是使用 Angular 4 + AoT + Webpack 2 定义的

    我有一个使用 webpack 的 angular4 应用程序 并且一直与 JiT 配合得很好 但现在我试图让它与 AoT 配合使用 但我遇到了问题 具体来说 我收到以下错误 ERROR in window is not defined ER
  • 错误 TypeError:无法使用角度 6 读取 ngx-bootstrap 中 null 的属性“createText”

    我想使用以下命令从不同的组件打开 ngx bootstrap 模式 ViewChild在角度 6 但我收到此错误 错误类型错误 无法读取 null 的属性 createText 在 ComponentLoader push node mod
  • Angular 6 更新 - 未找到 rxjs-5-to-6-migrate 命令

    在升级过程中从更新 angular io https update angular io 使用 rxjs tslint 自动更新规则删除已弃用的 RxJS 6 功能 对于大多数应用程序 这意味着运行以下两个命令 npm install g
  • Angular 15:将 require.context 迁移到 import.meta.webpackContext 导致此错误:{}.webpackContext 不是函数

    我最近将 Angular 14 升级到 15 但 require context 出现了问题 无需深入讨论 我使用了 import meta webpackContext 这意味着 ESM 相当于前者 它返回相同的 requireConte
  • Typescript 有序字典

    我需要存储相对大量的按索引排序的数据 类似于可编辑的聊天 按时间排序并随机访问进行编辑 项目数量相对较多 索引 操作的数量与 排序 操作的数量相似 我不会每次都阻止 搜索 或 排序 的计算 并且我会搜索更智能的集合 我试图找到有序字典集合
  • 如何在 Angularfire2 Angular2 中对 FirebaseListObservable 列表进行排序?

    我想从 Firebase 实时数据库中获取所有用户 并按分数属性对它们进行排序 我已经使用变量来完成这个工作 users FirebaseListObservable
  • crypto.randomBytes 不是 Angular 中的函数

    我正在进口ethereumjs 钱包 https github com ethereumjs ethereumjs wallet在角度4中 import EthereumWallet from ethereumjs wallet var w
  • Angular2 RC5动态编译具有正确模块的组件

    我正在尝试使用 angular2compiler https angular io docs ts latest api core index Compiler class html动态插入组件 只要所有代码都在默认模块中 它就可以正常工作
  • 从 *ngIf Angular 5 调用函数

    假设我这里有这段代码 div lorem ipsum div 如果 ngIf 计算结果为 true 有没有办法可以调用函数 你知道这样的事情 div lorem ipsum div 任何帮助 将不胜感激 Thanks 角度方式是 div d
  • Angular 2 反应形式的嵌套数组?

    我使用以下教程在 Angular 2 中创建反应式表单 效果很好 https scotch io tutorials how to build nested model driven forms in angular 2 https sco
  • 如何以角度形式创建传单地图

    我的要求是以角度形式创建传单地图 但我对这种形式很陌生 我知道如何将地图与普通 html 结合使用 如下所示 地图组件 ts ngOnInit const map L map map setView 51 509865 0 118092 1
  • 上传带有附加信息的文件(Angular 8 到 C# Core 3)

    我终于弄清楚如何将文件从 Angular 8 前端上传到 C Net Core 3 0 后端 API 控制器 但为了获得我完全需要的内容 我还有一个类定义了用户设置的文件内容 例如标题行 列值等 也需要传入 在客户端 我只需创建一个 For
  • 是否可以在 Angular 6 中生成 QR 码并将其导出为 pdf,而不将其渲染为 html

    我想使用将 QR 码导出为 pdfjsPDF而不在 html 中显示它 我尝试了很多库 qrcode angularx qrcode 你可以使用ngx 二维码 https github com techiediaries ngx qrcod
  • Nestjs如何控制缓存?

    最近读了nestjs的文档 从中学到了一些东西 但我发现了一些让我困惑的事情 In 技术 缓存 https docs nestjs com techniques caching 文档告诉我使用像这样的装饰器 UseInterceptors

随机推荐

  • 如何使用 CasperJS 移动 jquery-ui 滑块

    有什么办法可以移动jQuery UI 滑块 with CasperJS 我也发现了这个github问题在寻找一种可能性时 只需单击滑块的左侧或右侧即可移动handle 但这对我来说也不起作用 任何想法 移动滑块的工作原理如下 casper
  • 在 Firefox 中检查元素标尺

    我想知道是否有任何方法可以在 Firefox 中查看标尺 就像 Chrome 检查元素标尺一样 Chrome 显示您当前的宽度 即 宽度 填充 标尺悬停时的当前宽度 see below Chrome screenshot for ref 它
  • Android 未知命令“紧缩”

    我刚刚在 Mac OS X 中安装了 Eclipse 和 Android SDK 我将项目导入到 Eclipse 但在运行项目时出现未知命令 crunch 错误 我应该如何解决这个问题 请帮我 我刚刚更新 Android SDK Platf
  • 如何让图表填满整个窗口

    我正在使用 QtDesigner 创建的应用程序中绘制图形 问题是 当显示图形时 图形空间和 mplwidget 空间之间会出现一个大的 灰色边缘 这使得绘图变小 那么我如何删除在主窗口中显示图形时出现的这个大 灰色边框 I would l
  • Amazon SES 使用 java 从 S3ObjectInputStream 对象读取存储在 s3 存储桶中的电子邮件

    我已经配置了我的AWS SES将所有传入电子邮件存储到对象键前缀为电子邮件的 S3 存储桶 我有一个 Java 应用程序 我正在尝试读取该存储桶中的所有对象 然后将它们移动到另一个存储桶中 以便只有未读的电子邮件保留在存储桶中 我使用以下代
  • 如何下载wordpress源码?

    我用他们的模板创建了一个 WordPress 网站 为了在另一个托管平台上托管我的 WordPress 网站 我需要我的 wordpress com 网站的源代码 包含所有 php 文件 有没有简单的方法可以做到这一点 这是我第一次使用 w
  • Windows Server 2019 Docker docker.exe:守护程序的错误响应:无法启动服务实用程序 VM(createreadwrite):

    我在 VMWare 中创建了 Windows Server 2019 VM 我尝试在那里运行 docker 容器 Ubuntu 但出现此错误 docker exe 来自守护程序的错误响应 无法启动服务 实用虚拟机 创建读写 我已经做了什么
  • 如何在 UIImage 上快速绘制/涂鸦线?

    我需要在 UIImage 中绘制 涂鸦一条线 如上图所示 我看到很多教程在 UIView 上涂鸦线 但不在 UIImage 中 用户在图像上涂鸦后 我想将其保存为新图像 有线条的图像 我该如何在 Swift 中做到这一点 我只能在 UIVi
  • Python 用多个分隔符分割字符串并查找使用的分隔符

    如何使用多个分隔符分割字符串 并找出使用哪个分隔符分割 maxsplit 为 1 的字符串 import re string someText someValue re split string 1 returns someText som
  • 运行时错误 - 无法访问文件

    我有以下 VBA 脚本 它可以保存工作簿 并且效果很好 但是 如果再次单击 commandbutton1 它会正确显示选项框 您要替换该文件吗 是 否 取消 是 选项工作正常 但 否 和 取消 选项会弹出错误框 RunTime error
  • Matlab全局变量可以在Matlab中产生更好的性能吗?

    我讨厌使用全局变量 每个人都应该这样做 如果一种语言无法使用全局变量 则应该对其进行更新 目前 当效率是目标时 我不知道在 Matlab 中使用全局变量有什么好的替代方法 据我所知 只能通过 4 种方式在回调之间共享数据 嵌套函数 geta
  • Flexbox 列换行列表,无重叠项目

    我有一个列表 我想将其包装在最大宽度为 540px 的弹出模式上显示 通常 它看起来像这样 但如果添加太多名字 那么它就会像这样重叠 我的目标是通过隐藏溢出 仅显示基于数据的最大可能列 或使其可滚动来防止名称重叠 当项目数量和名称长度未知时
  • 使用 Flexbox 控制行中的项目数

    我想在第一行显示 4 个项目 但在第二行只显示 3 个项目 然后在第三行显示 4 个项目 在第四行显示 3 个项目 依此类推 我已经通过以下方式实现了这一点nth child但代码太多 不灵活 可扩展性差 可以用flex吗 还是网格 box
  • PHPExcel - 未正确获取引用另一个单元格的单元格值

    当我尝试从 Excel 文件中提取信息时遇到这个问题 这是我的情况 我有 34 个 Excel 文件 这些文件是我从各个用户那里收到的 我正在使用 PHP 版本 5 从 Excel 文件中提取 我的脚本将为每个文件循环 并根据工作表名称再次
  • Primefaces tabview tabChange 事件在显示选项卡后触发

    我正在使用 Primefaces 3 5 和 JSF2 1 Mojarra 开发一个项目 我创建了一个primefaces
  • matlab使用activex接口自动保存excel文件

    我有一个matlab代码 运行程序后 创建了一个文件 example2 xlsx 现在我有下面的代码 我希望 matlab 将当前的 example2 xlsx 替换为新的 example2 xlsx 自动保存而不询问我是否要替换它 e a
  • 在 iPhone 中实现静态库

    我创建了一个静态库如下这个链接 但我在使用图书馆时遇到问题 有关如何在 iPhone 项目中使用静态库的参考 我遵循这个链接 但我仍在为 如何在任何其他 iPhone 项目中实现静态库 而苦苦挣扎 问题 谢谢你们 您可以像帖子中那样使用跨项
  • 如何使用Python打印多行文本

    如果我想在Python中打印多行文本而不需要输入print 对于每一行 有没有办法做到这一点 我在 Python 3 5 1 中将其用于 ASCII 艺术 您可以使用triple引号 单 或双 a text text text print
  • Java 唯一随机生成整数的数组

    public static int uniqueRandomElements int size int a new int size for int i 0 i lt size i a i int Math random 10 for in
  • Angular2:将服务器端配置注入服务

    我在 ASP NET Core 中使用 Angular 2 0 0 和 TypeScript 我的目标是根据服务器端变量在我的应用程序中创建 AppConfig 服务 在其他几个答案的帮助下 我能够创建以下代码 索引 cshtml