小编Bry*_*Man的帖子

使用 mat-option 选择“空”值,Angular 7 反应式表单不起作用

我试图在 mat-select 中默认选择一个包含“空”[值] 的选项。问题是,当显示 html 时,它没有选择带有 "null" [value] 的选项。我正在使用带有 Angular Material 7 的 Angular 7 Reactive Forms。这是我所拥有的 -

网址:

<mat-select placeholder="User" formControlName="userId">
  <mat-option [value]="null">None</mat-option>
  <mat-option *ngFor="let user of users" [value]="user.userId">
      {{ user.name }}
  </mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)

组件.ts:

this.userId.setValue(null);

上面的行假设我已经使用名为“userId”的 formControls 之一实例化了我的 formGroup,而“this.userId”是我的组件的一个属性,它引用了“this.userForm.get('userId')”。

因此,当我将“userId”的 formControl 值设置为 null 时,在 html 中没有选择任何内容。我的印象是您可以将“空”值作为 mat-select 的选项之一,我错了吗?如果没有,关于我可以做些什么来让它按照我想要的方式工作的任何建议。

谢谢!

angular-material2 angular

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

使用 angular-auth-oidc-client 使用 PKCE 代码流自动登录

我正在使用此 npm 包通过 PKCE 代码流实现自动登录概念。我尽可能地按照文档和示例进行操作。在我的 app.component.ts 构造函数中,我有以下内容:

if (this._oidcSecurityService.moduleSetup) {
        this.doCallbackLogicIfRequired();
    } else {
        this._oidcSecurityService.onModuleSetup.subscribe(() => {
            this.doCallbackLogicIfRequired();
        });
    }
Run Code Online (Sandbox Code Playgroud)

在我的 ngOnInit 我有以下内容:

ngOnInit(): void {
    this._oidcSecurityService.getIsAuthorized().subscribe(auth => {
        this.isAuthenticated = auth;
        if (!this.isAuthenticated)
            this._router.navigate(['/autologin']);
    });
  }
Run Code Online (Sandbox Code Playgroud)

doCallbackLogicIfRequired()我的方法中:

private doCallbackLogicIfRequired(): void {
      this._oidcSecurityService.authorizedCallbackWithCode(window.location.toString());
  }
Run Code Online (Sandbox Code Playgroud)

由于登录页面(和按钮)位于身份服务器(STS 服务器)上,我的 angular 应用程序中有一个自动登录组件,如下所示:

constructor(private _oidcSecurityService: OidcSecurityService) {
    this.isAuthorizedSubscription = this._oidcSecurityService.onModuleSetup.subscribe(() => { this.onModuleSetup(); });
  }

  ngOnInit() {
    if (this._oidcSecurityService.moduleSetup) {
      this.onModuleSetup();
    }
  }

  ngOnDestroy(): void {
    this.isAuthorizedSubscription.unsubscribe();
  }

  private onModuleSetup() { …
Run Code Online (Sandbox Code Playgroud)

oauth oauth-2.0 identityserver4 angular pkce

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

.NET Core 3.0 Web Api 字典关键 CamelCase 问题

我有一个 .NET Core Web Api,最近从版本 2.2 迁移到版本 3.0。我的一个控制器中有一个返回字典的路线/方法。我现在遇到的问题是,当从 api 返回响应时,字典键采用 PascalCase,而不是像我升级之前那样采用 CamelCase。

在更新到 .NET Core 3.0 之前,我的启动中有以下代码

services.AddMvcCore()
   .AddJsonOptions(opts => 
   {
       opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
   });
Run Code Online (Sandbox Code Playgroud)

现在,由于删除了 Newtonsoft Json.Net 包,我删除了上面的代码块并将其替换为以下代码 -

services.AddControllers(config =>
{
   // Some configuration in here
})
.AddJsonOptions(options => options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase)
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当我希望字典键采用 CamelCase 格式时,我仍然以 Pascal Case 形式取回字典键。我尝试了其他几种方法都没有效果。我通读了迁移文档,但找不到有关此特定主题的任何信息。我还在 GitHub 上遇到了一些相关的问题,但没有帮助

  1. 第1期
  2. 第2期

也许我在某个地方错过了额外的配置才能使其正常工作,或者我需要返回 Newtonsoft 软件包,我只是不确定。

asp.net-core asp.net-core-webapi asp.net-core-3.0

6
推荐指数
1
解决办法
1846
查看次数

通过依赖注入在 .NET Core 中使用 FluentValidation

我有一个 .NET Core Web Api 应用程序,它按以下方式排列 -

  1. 注入业务服务的控制器层
  2. 注入工作单元的业务服务(与数据库交互)
  3. 业务服务也可能调用 FluentValidation 类
  4. FluentValidation 将注入工作单元以执行数据库检查(存在等)

说了这么多,这里只是一个例子。如果我想在系统中创建一个用户,我在“UsersController”中有一个名为“PostUser”的路由/方法。“UsersController”注入“UserService”。“UserService”有一个名为“CreateUser”的方法。所以在控制器的“PostUser”方法内部,它看起来像这样 -

var user = _userService.CreateUser(user);
Run Code Online (Sandbox Code Playgroud)

现在在“CreateUser”方法中它看起来像这样 -

UserValidation validation = new UserValidation(UnitOfWork, DatabaseOperation.Create);
ValidationResult validationResult = await validation.ValidateAsync(user);
Run Code Online (Sandbox Code Playgroud)

因此,UnitOfWork 通过依赖注入传递到 UserService,然后传递给 FluentValidation 类“UserValidation”,以便验证类可以执行数据库检查。我还将枚举传递给 UserValidation 类,以指定验证是用于更新还是创建。

我试图验证的 User 对象将具有诸如“Role”和“Company”之类的属性,并且我还为每个对象(RoleValidation 和 CompanyValidation)提供了单独的验证类。这两个验证类还将传入一个 UnitOfWork 以及这是创建还是更新。

这是我的 UserValidation 类的示例 -

public class UserValidation : AbstractValidator<UserDTO> 
{
     private IUnitOfWork _unitOfWork;
     public UserValidation(IUnitOfWork unitOfWork, DatabaseOperation databaseOperation)
     {
         _unitOfWork = unitOfWork;

         if (databaseOperation == DatabaseOperation.Create)
         {
              // Do Create specific validation
         } …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection fluentvalidation .net-core

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