将 asp.net 服务器参数传递给 Angular 2 应用程序

2024-01-01

=================================================== =============

编辑:解决方案升级到 2.0 Final 后 -RC5升级后将服务器参数传递给ngModule https://stackoverflow.com/questions/38948463/passing-server-parameters-to-ngmodule-after-rc5-upgrade

=================================================== ===============

有什么方法可以将服务器参数传递给 Angular 2 应用程序吗?

即我想使用 MVC 对象“HttpContext.User.Identity.Name”并将其注入到我的 Angular 2 应用程序中的任何位置。

在 Angular 1 中,可以使用 ng“.constant” 并将 .Net 对象序列化为 index.cshtml 中的 JSON。

看起来有一种方法可以传递参数,但这不适用于 .Net 代码。在 Angular 2 中定义全局常量 https://stackoverflow.com/questions/34986922/define-global-constants-in-angular-2

        //HTML - Bootstrapping
        <script>

            System.import('app/main').then(null, console.error.bind(console));
            //I WOULD LIKE TO PASS SOME PARAMS TO APP/MAIN HERE
        </script>

最终解决方案:(非常感谢蒂埃里)

索引.cshtml:

<script>
    System.import('app/main').then(
        module => 
            module.main(
                {
                    name: '@User.Identity.Name',
                    isAuthenticated: User.Identity.IsAuthenticated.ToString().ToLowerInvariant(),
                }
            ),
        console.error.bind(console)
    );
</script>

main.ts:

...
    import {provide} from '@angular/core';
...

    export function main(params) {
        bootstrap(AppComponent,
            [
                provide('Name', { useValue: params.name }),
                provide('IsAuthenticated', { useValue: params.isAuthenticated }),
                ROUTER_PROVIDERS,
                HTTP_PROVIDERS,
                LoggerService,
                AuthenticationService
            ]);
    }

Usage:

import {Component, Injectable, Inject} from '@angular/core';
import {ROUTER_DIRECTIVES} from '@angular/router';

@Component({
    selector: 'navbar',
    templateUrl: 'app/components/header/navbar.html',
    directives: [ROUTER_DIRECTIVES]
})
export class SomeComponent {

    constructor(@Inject('Name') public username: string) {

    }

}


一个选项是在您导入的模块中添加一个方法。这样你就可以调用它来提供你想要的对象。

这是一个示例app/main module:

import {bootstrap} from '...';
import {provide} from '...';
import {AppComponent} from '...';

export function main(params) {
  let userIdentityName = params.name; // for example
  bootstrap(AppComponent, [
    provide('userIdentityName', { useValue: userIdentityName })
  ]);
}

然后你可以从 HTML 主页导入它,如下所示:

<script>
  System.import('app/main').then((module) => {
    module.main({
      userIdentityName: 'something from asp.net'
    });
  });
</script>

Update

使用最新版本的 Angular,您需要以这种方式利用模块:

export const USER_IDENTITY_NAME_TOKEN =
  new  InjectionToken('userIdentityName');

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

将 asp.net 服务器参数传递给 Angular 2 应用程序 的相关文章

随机推荐

  • 如何更改 ImageView 的图像? [复制]

    这个问题在这里已经有答案了 我刚刚开始学习android 我不知道如何改变一个人的形象ImageView 即它有一些在布局中设置的图像 但我想通过编码更改该图像我应该怎么做 这是 xml 文件
  • 带偏移量的 Linux 头/尾

    Linux 中有没有一种方法可以询问 Head 或 Tail 但需要忽略额外的记录偏移量 例如 如果文件example lst包含以下内容 row01 row02 row03 row04 row05 我用head n3 example ls
  • 在页面加载时使 div 晃动?

    有没有办法让 div 框在页面加载时抖动 就像也许只有一次或两次 Update 在这个 URL 上 我的页面加载仍然无法正常工作 我做错了什么 http tinyurl com 79azbav http tinyurl com 79azba
  • React 渲染组件数组

    快问 有人知道如何渲染组件数组吗 试图让开发人员更容易地更改特定组件 它就像一个仪表板 组件列表文件 import React from react export default
  • React hooks 常量的 useMemo 与 useState

    使用 React hooks 定义计算 初始化 常量可以通过两种功能相同的方式执行 我不想讨论这个用例 但足以说明 在某些情况下 可以从初始 props 或状态中派生出一个常量值 而这些值预计不会改变 想想路由数据 绑定调度等 First
  • 无法快速解码 json

    这是http客户端 打印字符串时响应是正确的 但在尝试解码时显示转换错误 let task URLSession shared dataTask with request data response error in Check for E
  • 在 rmarkdown pdf 输出中包装比例表的列名称的有效方法

    我正在使用提问者包制作行比例的加权表 当列名太长时 我想将它们换行 因为我正在制作数百个表 所以该解决方案需要适用于具有不同列数的表 我还想避免将所有列设置为特定宽度 理想情况下 短列名称将保持其正常宽度 而超过指定最大长度的名称将被换行
  • 如何将 8 个小圆圈围绕一个中心大圆圈对齐,如附图所示?

    I have to do this layout 我试图使用RelativeLayout和layout toRightOf layout below等来对齐视图 但我取得的最好成绩是 以下是 xml
  • 将多张地图组合/合并为一张地图

    如何将 dart 中的 2 个或更多地图组合 合并为 1 个地图 例如我有类似的东西 var firstMap 1 2 var secondMap 1 2 var thirdMap 1 2 I want var finalMap 1 2 1
  • 如何在不使用CreateObject的情况下打开excel并获取工作簿

    由于讨论的几个原因here https stackoverflow com questions 25022266 opening an excel file manually allows formulas to run opening a
  • 摆动拖放文件可传输吗?

    我想从我的应用程序拖放到系统文件夹中 以便当我放置一个项目时 它会显示为一个代表我拖动的对象的新文件 我应该使用什么 DataFlavor 我自己想出来了 你只需要使用DataFlavor javaFileListFlavor http d
  • 仅删除逗号前后的空格

    我正在寻找一种正则表达式 方法来仅删除逗号前后的空格 例子 100 0 101 0 101 1 100 1 100 0 100 2 0 2 100 8 0 2 100 8 0 8 100 2 0 8 100 2 0 2 预期结果 100 0
  • 将数据分箱到 Google 地图中的六角形网格中

    我正在尝试在 Google 地图上的六角形网格中显示地理空间数据 为此 给定六边形瓷砖网格尺寸X我需要能够转换 lat lng 坐标转化为 lat lng 包含它们的六边形网格图块的中心 最后 我希望能够在 Google 地图上显示数据 如
  • Composer 与 Symfony 2 自动加载器

    我开始使用Composer http getcomposer org 在一个项目中 我历史上将所有依赖项都置于版本控制之下 该项目目前使用的是Symfony 2 自动加载器 http symfony com doc 2 0 componen
  • Animate.css 不工作

    我在用动画 css https daneden me animate 但它似乎在火狐中不起作用 我正在使用的代码是 div class rotateIn content div 我希望这个 div 在我们加载页面时显示旋转效果 但它似乎不起
  • React Native中的“模块不存在于模块映射或这些目录中”

    我已经开始学习 React Native 我在简单的 React Native 项目中苦苦挣扎 同时在 index android js 中导入新的 js example Home js 我收到以下错误 模块映射或这些目录中不存在模块 Un
  • Json.NET 序列化中有没有办法区分“null 因为不存在”和“null 因为 null”?

    我正在使用 ASP NET webapi 代码库 其中我们严重依赖通过 JSON NET 将消息正文 JSON 反序列化为 NET 对象的自动支持 作为为我们的资源之一构建补丁支持的一部分 我非常希望区分 JSON 对象中不存在的可选属性与
  • Active Admin Gem - Rails 3.2.3,Heroku 错误日志

    我在理解错误日志时遇到问题 我正在使用 Active Admin 一切在我的本地服务器上运行良好 但是当我推送到 Heroku 时 我无法登录或使用 Active admin 我有点不知道问题是什么 我妻子的前端可以工作 但是当我第一次尝试
  • CS50 - pset4 过滤器“模糊”问题

    我的模糊功能表现得很奇怪 我从 check50 重新创建了 3x3 位图 以便从测试中获得更近似的结果 但由于某种原因 每个右边缘或下边缘像素都无法正常工作 在调试时 我发现由于某种原因 我的 for 循环行为不正常 我将在下面展示我的代码
  • 将 asp.net 服务器参数传递给 Angular 2 应用程序

    编辑 解决方案升级到 2 0 Final 后 RC5升级后将服务器参数传递给ngModule https stackoverflow com questions 38948463 passing server parameters to n