小编Pak*_*Pat的帖子

返回{__zone_symbol__state:null,__ zone_symbol__value:Array(0)}的Angular自定义异步验证器

我试图实现自定义验证器.非异步one(cannotContainSpaces)工作得很好.async one(shouldBeUnique),是的,目前是微不足道的,应该按照我的理解返回promise,Validator对象应该解析.它没有.formControl上的错误集合在username控制台中显示:

{__zone_symbol__state: null, __zone_symbol__value: Array(0)}
Run Code Online (Sandbox Code Playgroud)

表单组件:

import { CustomValidators } from './custom.validators';
import { Component, Input } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'signup-form',
  templateUrl: './signup-form.component.html',
  styleUrls: ['./signup-form.component.css']
})
export class SignupFormComponent {

  form = new FormGroup({
    username: new FormControl('', [ 
       CustomValidators.cannotContainSpaces,
       CustomValidators.shouldBeUnique
      //  Validators.email, 
    ]),
    password: new FormControl('', Validators.required)
  })

  get username() {
    return this.form.get('username');
  }

  keyPressed(){
    console.log(this.username.errors)
  }

}
Run Code Online (Sandbox Code Playgroud)

自定义验证方法:

import { AbstractControl, ValidationErrors } …
Run Code Online (Sandbox Code Playgroud)

asynchronous custom-validators promise angular

10
推荐指数
1
解决办法
1331
查看次数

Angular FIrebase 5对象键未显示.所以无法删除

问题已得到解答,但我正在寻找一个,嗯,更直接的问题.看起来奇怪的是,我们必须实现一个而不是两个映射才能访问对象键.

基本firebase db: 在此输入图像描述 可以看出,课程对象显然有键.加价:

<ul>
  <li *ngFor="let course of courses$ | async">
    <b>Key:</b> {{course.$key}} <!-- doesn't show --!>
    <b>Title:</b> {{course.Title}}
    <b>Duration:</b> {{course.Duration}}
    <b>Author:</b> {{course.Author}}
    <p><button (click)="deleteCourse(course)">Remove</button></p>

    <hr> 
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

现在,这些课程显示得很好,但我不知道如何获取对该键的引用以便删除它.(或者我可能没有在我的firebaseDatabase对象上使用正确的方法).无论哪种方式,当我在控制台中记录密钥时,它显示为未定义.

export class AppComponent {
  courses;
  courses$: AngularFireList<any>;

  constructor(private db: AngularFireDatabase) {
    this.courses = db.list('/courses');
    this.courses$ = this.courses.valueChanges();
  }
  ...
  deleteCourse(course) {
    console.log(course.$key); // -> undefined
    this.db.object('/courses/' + course.$key).remove();
  }
}
Run Code Online (Sandbox Code Playgroud)

firebase firebase-realtime-database angular

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

如何修复:异步方法的返回类型必须为 void、Task 或 Task&lt;T&gt; [AppName]

我正在使用 VS Code 并遵循 ASP.NET Core/EF Core 教程,并承认我不太清楚 async、await 和 Task 是如何工作的(嗯,我知道前两个,但不知道第三个。)我第一次实现一个存储库,以及与之配套的 UnitofWork 类和接口。这是工作单元类:

using System.Threading.Tasks;

namespace vega.Persistence
{
  public class UnitOfWork : IUnitOfWork
  {
    private readonly VegaDbContext context;

    public UnitOfWork(VegaDbContext context)
    {
      this.context = context;
    }

    public async Task CompleteAsync()
    {
      await context.SaveChangesAsync();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在 CompleteAsync 操作名称上时,除了 VS-Code 智能感知显示的主题行错误之外,我还得到以下信息:

'UnitOfWork.CompleteAsync()': not all code paths return a value [AppName]
Run Code Online (Sandbox Code Playgroud)

其他可能相关的片段:

using System;
using System.Threading.Tasks;

namespace vega.Persistence
{
    public interface IUnitOfWork
    {
        Task CompleteAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 Startup.cs 中: …

asp.net-mvc repository-pattern async-await

3
推荐指数
1
解决办法
8161
查看次数

对象属性未更新

我的 MVC5 项目视图对 api/movies 进行 api 调用,其中存在以下逻辑:

(首先,这是 movieDto 的实例化方式):

var moviesQuery = _context.Movies.Include(m => m.Genre);
var moviesDto = moviesQuery.ToList()
            .Select(Mapper.Map<Movie, MovieDto>);
Run Code Online (Sandbox Code Playgroud)

逻辑如下:

//for regular API call add N/A to items that are not available
    foreach (MovieDto movie in moviesDto)
    {
        if (movie.NumberAvailable == 0)
                movie.Name = movie.Name + " N/A. :(";
    }
    return Ok(moviesDto);
Run Code Online (Sandbox Code Playgroud)

我在运行时在调试模式下的 Foreach 循环中检查电影对象,确实发现某些电影的 name 属性附加了“N​​/A :(”。但在视图中,只有电影的 (原始)名称出现。

编辑:在返回给调用者之前检查上面最后一行的 movieDto 时,我发现相关电影的名称尚未更新。

FWIW,这是 movieDto 类定义:

public class MovieDto
    {
        public int Id { get; set; }

        [Required] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc object-properties

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

不使用 RegExp 验证 UUID

JavaScriptArray.every()没有按我预期的方式工作

我的任务是在不使用 regex 的情况下编写GUID有效性的基本检查。所以我所做的就是检查 guid 字符串中的非破折号字符是否是十六进制数字。

const isValidGUIDChar = (char) =>  !isNaN(+char) || "abcdef".includes(char.toLowerCase());

// let guid = "123";
// let guid = "abc"
let guid = "abc123";

let isGuidValid = guid.replaceAll('-', '').length === 32 && guid.split().every(isValidGUIDChar);

console.log(isGuidValid);  // returns true for either 'abc' or '123' but false for 'abc123'
Run Code Online (Sandbox Code Playgroud)

上面评论中提到的结果是违反直觉的。该every()方法似乎评估为:

(每个字符必须是数字),或(每个字符必须来自 'abcdef') ”,

而我需要的,以及看起来直观的,是让它评估:

(每个字符)必须(可以是‘abcdef’中的数字)

我怎样才能实现后者?

javascript ecmascript-6

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

Angular2 TS TS2322:类型'()=>任何'不能分配给'Post []'类型.

githubrepo

我在CLI控制台中收到上述错误,即使Post已被定义为接口/类型:user.component.ts:

import { Component } from '@angular/core';
import {PostService} from '../services/post.service';

@Component({
  selector: 'user',
  template: #`,
  providers: [PostService],
})
export class UserComponent  { 
    name: string;
    email: string;
    address: address;
    hobbies: string[];
    showhobbies: boolean;
    posts: Post[];

`   constructor(private postService: PostService) {
        ...
        this.postService.getPosts().subscribe(posts => {
            this.posts = posts;
            console.log(posts);
        });
    }
}

interface Post{
    id: number;
    title: string;
    body: string;
}
Run Code Online (Sandbox Code Playgroud)

post.service.js:

import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()

export class PostService {
    constructor(private http: Http){ …
Run Code Online (Sandbox Code Playgroud)

typescript angular

0
推荐指数
1
解决办法
1440
查看次数

是否有一种快捷方式来返回以C#排序的数组

...除了使用: Array.Copy(originalArray, newArray) 制作原始版本的副本然后使用: return Array.Sort (newArray) 获取排序的数组 - 当然不需要更改原始数组?

c# arrays sorting

0
推荐指数
1
解决办法
581
查看次数