我仍然是新手并通过教程学习,但由于某种原因,我No provider for formbuilder在尝试测试唯一用户名时收到了消息.我不知道为什么我收到这条消息,但我无法找到解决方案.谁能告诉我为什么会这样?
注册-component.ts
import {Component} from '@angular/core';
import {ControlGroup, Control, Validators, FormBuilder} from '@angular/common'
import {UsernameValidators} from './usernameValidators'
@Component({
selector: 'signup',
templateUrl: 'signup-component.html'
})
export class SignupComponent{
form: ControlGroup;
constructor(fb: FormBuilder){
this.form = fb.group({
username:['', Validators.compose([
Validators.required, UsernameValidators.cannotContainSpace
])],
password: ['', Validators.required]
})
}
}
Run Code Online (Sandbox Code Playgroud)
usernameValidators.ts
import {Control} from '@angular/common'
export class UsernameValidators{
static shouldBeUnique(control: Control){
return new Promise((resolve, reject) => {
setTimeout(function(){
if(control.value == "andy")
resolve({shouldBeUnique: true});
else
resolve(null);
}, 1000);
});
}
static cannotContainSpace(control: …Run Code Online (Sandbox Code Playgroud) 我正在关注一个教程,我创建了一个 cache.js 文件,该文件将 mongoose 查询和 JSON.stringifying 其转换为该查询返回的值的键。我们的目标是缓存,然后追加.cache()内app.js其中mongoose.find()是
当前,如果缓存为空,我让它从数据库中执行 GET,然后将其存储在缓存中。我有一个
console.log("CACHE VALUE #2");
console.log(cacheValue1);
Run Code Online (Sandbox Code Playgroud)
这可确保数据得到存储并成功输出数据。这条线有效。但有了这条线,
console.log("CACHE VALUE #1");
console.log(cacheValue);
Run Code Online (Sandbox Code Playgroud)
在cacheValue为空。
这是为什么?
它存储在底部的值和键永远不会改变所以我不明白为什么它不会返回数据而不是空值。
SoCache Value #1始终为空并Cache Value #2具有正确的数据。
控制台输出:
GRABBING FROM DB
CLIENT CONNECTION STATUS: true
Setting CACHE to True
ABOUT TO RUN A QUERY
{"$and":[{"auctionType":{"$eq":"publicAuction"}},{"auctionEndDateTime":{"$gte":1582903244869}},{"blacklistGroup":{"$ne":"5e52cca7180a7605ac94648f"}},{"startTime":{"$lte":1582903244869}}],"collection":"listings"}
CACHE VALUE #1
null
CACHE VALUE #2
(THIS IS WHERE ALL MY DATA SHOWS UP)
Run Code Online (Sandbox Code Playgroud)
const mongoose = require('mongoose');
const redis = require('redis');
const util = …Run Code Online (Sandbox Code Playgroud) 我让我的平均堆栈代码在 docker-compose 配置中工作。如果我docker-compose up在我的电脑上运行,那么我可以成功登录到我的应用程序localhost如果转到应用程序服务并单击 docker-compose 预览选项并上传我的 docker-compose.yml 文件。部署后,当我单击该应用程序的 URL 时,出现应用程序错误,但不知道为什么。也许我必须更改文件中的某些内容才能使其在不同的环境中工作?我感谢任何帮助!
我在某处读到,如果在同一订阅中使用 ACR,则不必提供用户名、密码或 URL 详细信息,确实如此。因此,如果是这种情况,则身份验证不是问题。
前端 docker 镜像和后端 docker 镜像位于 azure 容器注册表中。当我在应用服务中设置 docker 时,我指向注册表 来自 azure 的 docker 日志说
2020-02-19 15:08:20.257 INFO - Starting multi-container app, configuration =
2020-02-19 15:08:22.806 ERROR - Pull image threw Exception: Object reference not set to an instance of an object.
2020-02-19 15:08:22.806 ERROR - Pulling docker image failed:
2020-02-19 15:08:22.806 ERROR - Image pull failed: Verify docker image configuration and credentials …Run Code Online (Sandbox Code Playgroud) 我的 SignalR Angular 服务很好地连接到后端。当我登录我的应用程序时,我得到了我的 access_token。我也可以发送消息并订阅我刚刚发送的消息,但我无法通过 SignalR 订阅它。如果我打开了两个浏览器并通过一个浏览器发送消息。门户信号服务消息计数增加 1,订阅方法从这一行开始
this.http.post('http://localhost:7070/api/messages', message).pipe(takeUntil(this.destroy)).subscribe(data => console.log(data));
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我无法通过服务接收消息。
目前,如果我分配test为 BehaviorSubject 值:
private source = new BehaviorSubject("test");
然后在组件输出中的 ngOnInit 中的这一行
this.signalRService.signalReceived.subscribe(data => console.log("Output:", data))
Run Code Online (Sandbox Code Playgroud)
它永远不会返回新订阅的消息。并不是我所期望的,因为该消息甚至没有进入服务。
虽然也值得注意我不能同时初始化测试。更多的是为了演示
所以如果它被初始化为private source = new BehaviorSubject(null);
组件控制台输出是Output: null
如何让 SignalR 服务返回值?它使用了本文中的 azure 函数代码,并且也可以毫无问题地连接到该文章中的示例聊天应用程序。
它也可以通过示例应用程序在 2 个不同的浏览器之间接收消息,因此我认为鉴于此测试有效,它与客户端的相关性比后端更多。我已经坚持了一段时间,所以我感谢任何帮助!
信号服务
import { Injectable, EventEmitter, OnDestroy, Output } from "@angular/core";
import * as signalR from "@microsoft/signalr";
import { SignalViewModel } from "./signal-view-model";
import { HttpClient, HttpParams …Run Code Online (Sandbox Code Playgroud) 我正在学习教程,并且试图将 vscode 指向我为 Scrapy 设置的虚拟工作区,但是当我在 VSCode 中打开设置时,“用户设置”选项卡旁边没有“工作区设置”选项卡。我还尝试通过转到我从这里获得的 %APPDATA%\Code\User\settings.json 手动转到文件:https : //vscode.readthedocs.io/en/latest/getstarted/settings/ 但 settings.json不在里面 我怎样才能让这个设置出现或进入我的 settings.json 文件,以便我可以进行必要的编辑。任何帮助表示赞赏。
当我运行时,我收到了一堆警告ng build --prod。例如
...
WARNING in budgets, maximum exceeded for C:/Users/Phil/Documents/myapp/myapp - offical-dev/src/app/profile/profile.component.css. Budget 6 kB was exceeded by 895 bytes.
WARNING in budgets, maximum exceeded for initial. Budget 2 MB was exceeded by 2.94 MB.
Run Code Online (Sandbox Code Playgroud)
我知道我可以轻松进入 angular.json 并调整这些预算阈值,但我不知道这是否是一个坏主意。我应该对提高这些预算有任何顾虑吗?
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "65kb"
}
]
},
Run Code Online (Sandbox Code Playgroud)
我通过将 anyComponentStyle 类型设置为 65 来做到这一点,以使 CSS 预算警告消失,但这是否会产生性能问题,或者我应该调整它们以满足我的应用程序的大小而不用担心它?
如果满足条件,我尝试从 switchmap 返回一个值,但它返回的 console.log 被分解为单个字符。因此,如果角色返回为买家,那么它就会返回为
console.log("RES");
console.log(res);
Run Code Online (Sandbox Code Playgroud)
输出
RES
B
RES
u
RES
y
RES
e
RES
r
Run Code Online (Sandbox Code Playgroud)
如何从 中返回完整的值subscribe()?我真的不明白为什么它会打破它。我很感激任何帮助!
邀请组件.ts
...
const linkExpiredDate = new Date(date);
const invite = new SendInvite();
invite.inviteEmail = form.value.email;
invite.invitedBy = this.userId;
invite.inviteLinkExpirationDate = linkExpiredDate;
this.inviteService
.sendInvite(invite)
.pipe(takeUntil(this.destroy))
.subscribe(
res => {
console.log("RES");
console.log(res);
this.timeout = this.toastr.success("Invite sent!", "", {
timeOut: 2000
});
this.invites.push({
inviteEmail: form.value.email,
invitedBy: this.userId,
inviteDate: Date.now()
});
this.dataSource.data = this.invites;
},
error => {
console.log(error)
this.timeout = this.toastr.warning( …Run Code Online (Sandbox Code Playgroud) 我无法找到有关如何使用 Angular 将现有用户池与 amplify 关联的信息。目前,当我点击“使用 Google登录”按钮时,出现以下错误:
CMDamplify configure没有提供有关 .config 文件的选项。所以我不确定如何建立这种关系来消除该错误。我已经这样做了amplify init并且成功完成了。
如何连接到用户池?
我很感激任何帮助!
当我点击登录组件中的 Google 登录按钮时,发生错误:
登录.组件.ts
async signInWithGoogle(): Promise < void > {
const socialResult =
await this.authService.socialSignIn(AuthService.GOOGLE);
console.log('google Result:', socialResult);
}
Run Code Online (Sandbox Code Playgroud)
auth.service.ts
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { Subject } from 'rxjs';
import { Amplify } from 'aws-amplify';
import { Observable } from 'rxjs';
import { BehaviorSubject } from 'rxjs';
import {
CognitoUserPool,
CognitoUserAttribute, …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-cognito angular aws-amplify aws-amplify-cli
我正在尝试弄清楚如何使用ngx-awesome-uploader将图像上传到 Angular 的 azure 存储 blob。
我希望能够使用此库将其从 angular 直接发送到 azure 存储 blob。我已经能够将它发送到我的 nodejs 后端没问题,但是将它直接发送到 blob 存储对我来说是一个挑战。谁能提供一个如何做到这一点的工作示例?我感谢任何帮助!
Choose Simple Demo in stackblitz. Not Advanced Demo
文件被传递给这个。(控制台输出在代码下方)
import { FilePreviewModel } from 'ngx-awesome-uploader';
import { HttpRequest, HttpClient, HttpEvent, HttpEventType } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { FilePickerAdapter } from 'ngx-awesome-uploader';
export class DemoFilePickerAdapter extends FilePickerAdapter {
constructor(private http: HttpClient) {
super();
}
public uploadFile(fileItem: …Run Code Online (Sandbox Code Playgroud) angular ×6
azure ×2
node.js ×2
asynchronous ×1
aws-amplify ×1
docker ×1
javascript ×1
mongoose ×1
python ×1
redis ×1
rxjs ×1
scrapy ×1
signalr ×1
sql ×1