小编Lan*_*ceM的帖子

Angular 2 Injected Service未定义

为什么我的DataHandlerService中的服务(this.loggerService)在注入时未定义?我认为依赖注入可以解决这个问题.我的loggerService适用于其他服务.请帮我意识到我哪里出错了.我的DataHandlerService代码如下:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { LoggerService } from './logger.service';

@Injectable()

export class DataHandlerService 
{
constructor(private loggerService: LoggerService)
{

}

extractData(res: Response)
{
    let body = res.json();
    return body || {};
}


handleHttpError(error: any)
{
    let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';

    if (errMsg && this.loggerService)  //Why is this.loggerService always undefined?
    {
        this.loggerService.error(errMsg);
    }

    return Observable.throw(errMsg); …
Run Code Online (Sandbox Code Playgroud)

dependency-injection angular-services angular

16
推荐指数
2
解决办法
1万
查看次数

从Visual Studio 2017部署Angular 2应用程序

我使用Visual Studio 2017并开发了两个Angular 2应用程序.第一个是纯Angular 2,没有后端代码(数据来自wcf服务).第二个是在MVC应用程序(.net 4.6)中托管的Angular 2 SPA应用程序.它们都很好用,我可以在VS2017中运行和编辑它们而没有任何问题.部署到IIS服务器时出现问题.目前,我正在使用gulp将node_modules目录中的组件捆绑到.js文件中.然后,我手动将应用程序的所有文件(包括gulp捆绑文件)复制到服务器.这是一个艰苦的过程,我想找到一个更好的方法.我希望Visual Studio能够提供模板来创建上述两种类型的角度2应用程序,并发布功能以捆绑应用程序,包括点击按钮所需的node_module组件但却感到失望.尽可能接近这个功能的最佳选择是什么?请帮忙.

visual-studio node-modules visual-studio-2017 angular

8
推荐指数
2
解决办法
2万
查看次数

如何在Angular 2中创建集中式异常处理以从未处理的异常中恢复

我正在尝试在Angular 2中创建集中式异常处理(对于所有代码而不仅仅是observable),这样如果存在未处理的错误,它将不会使应用程序崩溃但会记录它.目前,如果存在未处理的异常,我的应用程序将无法响应,我必须重新加载它.我创建了一个错误处理程序,如下所示:

import { NgModule, ErrorHandler } from '@angular/core';

export class AppErrorHandler implements ErrorHandler
{
    rethrowError = false;

    handleError(error: any)
   {

   }
}
Run Code Online (Sandbox Code Playgroud)

未处理的错误会转到handleError,但似乎是因为我的应用程序停止工作而被重新抛出.请帮忙.

error-handling angular

7
推荐指数
1
解决办法
3827
查看次数

如何为Angular反应形式动态设置禁用?

我有一个使用Kendo Angular Grid控件的Angular 4.10应用程序.我正在使用外部编辑.我创建了FormGroup,如下所示:

        this.editForm = new FormGroup({
        'Id': new FormControl({ value: 0, disabled: true }),
        'Name': new FormControl("", Validators.compose([Validators.required, Validators.maxLength(30)])),
        'BlindName': new FormControl({ value: "" }, Validators.compose([Validators.required, Validators.maxLength(30)])),
        'UnitText': new FormControl(0),
        'IsFromBsp': new FormControl(true),
        'Disabled': new FormControl(false),
        'SortOrder': new FormControl(0, Validators.compose([Validators.required, Validators.pattern('\\d')]))
    });
Run Code Online (Sandbox Code Playgroud)

我想要做的是根据值IsFromBsp为BlindName字段设置禁用状态.就像是:

'BlindName': new FormControl({ value: "", disabled: this.IsFromBsp }, Validators.compose([Validators.required, Validators.maxLength(30)])),
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?请告诉我.谢谢

kendo-ui-angular2 angular angular-reactive-forms

5
推荐指数
1
解决办法
4582
查看次数

由于升级到 Angular 9 Signalr 不起作用

我有一个使用 signalR 的角度应用程序。它托管在 .NET Core 3.1 应用程序中。升级到 Angular 9 后,signalR 不再有效。在 Angular 8 中一切正常。自更新以来,我一直收到类似的错误

404 错误:无法完成与服务器的协商

无法启动连接

我正在使用 MessagePackHubProtocol。在package.json文件中,我有以下包:

"@microsoft/signalr": "3.1.2",
"@microsoft/signalr-protocol-msgpack":"3.1.2"
Run Code Online (Sandbox Code Playgroud)

在 .NET 核心我有包:

Microsoft.AspNetCore.SignalR.Common 3.1.2 Microsoft.AspNetCore.SignalR.Protocols.MessagePack 3.1.2
Run Code Online (Sandbox Code Playgroud)

我使用的 Typescript 版本是 v3.7.5。我启用了 SSL。


我尝试按照这篇文章中的说明添加 CORS,并且还尝试将以下选项添加到我的客户端应用程序中。

"@microsoft/signalr": "3.1.2",
"@microsoft/signalr-protocol-msgpack":"3.1.2"
Run Code Online (Sandbox Code Playgroud)

不幸的是,两者都不起作用。

启动.cs:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Server.IISIntegration;
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using System.IO;


public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration …
Run Code Online (Sandbox Code Playgroud)

msgpack signalr .net-core angular

5
推荐指数
1
解决办法
3848
查看次数

.net Core 2.1应用程序中的Windows身份验证

我有一个.net Core 2.1 MVC应用程序,它承载一个Angular 6应用程序.我使用的是Visual Studio 2017 15.7.3.我正在尝试设置Windows身份验证但遇到问题.我按照文档和我的Program.cs和Startup.cs如下:

Program.cs中:

using Microsoft.AspNetCore.Server.HttpSys;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using System;

namespace CoreIV_Admin_Core
{
public class Program
{
    public static void Main(string[] args)
    {
        var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

        try
        {
            logger.Debug("init main");
            CreateWebHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            //NLog: catch setup errors
            logger.Error(ex, "Stopped program because of exception");
            throw;
        }
        finally
        {
            // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
            NLog.LogManager.Shutdown();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# windows-authentication asp.net-core

4
推荐指数
1
解决办法
1万
查看次数

从 Angular 9.17 升级到 9.19 后无法构建

我从 Angular 9.17 升级到 9.19,现在 ng build 失败并出现以下错误,抱怨@types/node 和 zone.js 中的变量声明:

node_modules/@types/node/ts3.5/globals.global.d.ts:1:13 中的错误 - 错误 TS2403:后续变量声明必须具有相同的类型。变量“global”必须是“Global”类型,但这里的类型是“Global & typeof globalThis”。

1 声明var global: NodeJS.Global & typeof globalThis; ~~~~~~

node_modules/zone.js/dist/zone.js.d.ts:600:13 600 声明 var global: NodeJS.Global; ~~~~~~ 'global' 也在这里声明。

升级前运行良好,现在无法构建。这是唯一的变化。

请帮忙。

我的 package.json

{
  "name": "myapp",
  "private": true,
  "version": "1.0.0",
  "scripts": {
    "ng": "ng",
    "start": "echo hello && ng serve --live-reload=false",
    "build": "node --max_old_space_size=4096 ng build",
    "build:ssr": "ng run MIC:server:dev",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "postcss": {},
  "dependencies": …
Run Code Online (Sandbox Code Playgroud)

typescript zonejs angular-cli angular angular9

4
推荐指数
2
解决办法
4883
查看次数

尝试验证 Azure AD 令牌时收到错误“IDX10511:签名验证失败”

我有一个 Angular 10 应用程序,它使用 oidc 对 Azure AD 进行身份验证。它成功获取令牌,然后对 WCF 服务(.net framework 4.7)进行 REST 调用,发送它从 Azure 收到的令牌。WCF 服务中的验证代码失败并显示以下错误:IDX10511:签名验证失败。尝试过的键:'System.Text.StringBuilder'。孩子:'System.String'。捕获异常:'System.Text.StringBuilder'。令牌:'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'。

如果我使用 Auth0 进行身份验证,则相同的 WCF 代码能够验证来自 Auth0 的 jwt,没有错误。

以下是我的 oidc 客户端的 UserManagerSettings:

          this.stsSettings = {
            authority: "https://login.microsoftonline.com",
            client_id: myclientId,
            redirect_uri: `${myclientRoot}signin-callback`,
            scope: "openid profile email",
            response_type: "code",
            loadUserInfo: false, // setting loadUserInfo to true causes error because CORS blocks the call to the user info endpoint.
            post_logout_redirect_uri: `${myclientRoot}signout-callback`,
            silent_redirect_uri: `${myclientRoot}assets/silent-callback.html`,
            metadata: {
              issuer: `${mystsAuthority}/${mytenantId}/v2.0`,
              authorization_endpoint: `${mystsAuthority}/${mytenantId}/oauth2/v2.0/authorize`,
              token_endpoint: `${mystsAuthority}/${mytenantId}/oauth2/v2.0/token`,
              "jwks_uri": `https://login.microsoftonline.com/${mytenantId}/discovery/v2.0/keys`,
            }
Run Code Online (Sandbox Code Playgroud)

我在 …

wcf jwt azure-active-directory openid-connect angular

2
推荐指数
1
解决办法
1699
查看次数