我正在使用Anugular 7和角材。我目前在尝试通过提交表单时遇到错误
(ngsubmit)=“ changePassword(formData)”
页面上的其他ngSubmit都可以正常工作,提交时没有问题。只是想知道是否有人遇到过此问题/知道解决方案。
home.component.html(代码段)
<ng-template #changePassword let-c="close" let-d="dismiss">
<div class="modal-header">
<h4 class="modal-title">Change Password</h4>
<button type="button" class="close" (click)="d('Cross Click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div *ngIf="msg" role="alert" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<mat-icon>done</mat-icon>
<span class="sr-only">Error:</span>
{{modalMsg}}
</div>
<form novalidate (ngSubmit)="changePassword(changePasswordFrm)" [formGroup]="changePasswordFrm">
<div class="form-group">
<div>
<span>Email Address*</span>
<input type="text" class="form-control" value="{{emailAddress}}" readonly formControlName="EmailAddress" />
</div>
<div>
<span>Old Password*</span>
<input type="password" class="form-control" value="{{password}}" readonly formControlName="OldPassword" />
</div>
<div>
<span>New Password*</span>
<input type="password" class="form-control" placeholder="New Password" formControlName="NewPassword" …Run Code Online (Sandbox Code Playgroud) 嗨,社区,我为我的angular 7项目实现了一个全局错误处理程序和一个全局加载组件(角度材料微调器)。当检测到HttpErrorResponse时,应卸下装载程序,并显示有角度的材料小吃吧。
快餐栏应在页面底部打开,单击“ x”时应关闭。
但相反,它在左上方打开。
单击“ x”时,它将关闭并在预期位置再次打开。但随后,它不再对点击做出反应。单击“ x”,然后单击窗口的其他位置后,它消失。
卸下加载微调器时,也会显示此行为。
有人知道如何解决这个问题吗?非常感谢你。
我将项目从angular 6升级到了angular7。我的项目中有一个文件上传组件。升级后会出现编译器错误。
onUpload() {
const fileReader = new FileReader();
fileReader.onload = () => this.uploadFile(fileReader.result);
fileReader.readAsText(this.fileToUpload);
}
uploadFile(fileContent: string) {
//upload
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,this.uploadFile(fileReader.result)给出以下错误。
错误TS2345:“字符串|类型”的参数 ArrayBuffer'不能分配给'string'类型的参数
的类型fileReader.result为string | ArrayBuffer,表示无法将其分配给string。如何将string | ArrayBuffer类型转换为string?
我遇到了一个Angular 7问题,该问题是在路由上具有解析器的模块的子组件无法加载。
app-routing.module.ts
{
path: 'Account',
loadChildren: './account/account.module#AccountModule'
}
Run Code Online (Sandbox Code Playgroud)
account-routing.module.ts
{
path: 'Profile',
component: ProfileComponent,
resolve: {
profile: ProfileResolver
}
}
Run Code Online (Sandbox Code Playgroud)
profile.resolver.ts
@Injectable()
export class ProfileResolver implements Resolve<Profile> {
constructor(private readonly accountService: AccountService) {
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Profile> {
return this.accountService.profile();
}
}
Run Code Online (Sandbox Code Playgroud)
profile.component.ts
@Component({
?
})
export class ProfileComponent implements OnInit {
model: Profile;
constructor(private readonly route: ActivatedRoute) {
}
ngOnInit(): void {
this.model = this.route.snapshot.data['profile'] as Profile;
}
}
Run Code Online (Sandbox Code Playgroud)
account.service.ts
@Injectable()
export class AccountService {
constructor(protected …Run Code Online (Sandbox Code Playgroud) 场景:从Angular7调用API时,我正在调用Node(通过express)并返回字符串类型的分块数据-我想捕获此字符串数据并将其显示为字符串
服务器端: 从Node后端发送的数据是“文本”而不是json ...数据是通过多个res.write('somestring')语句发送的
客户端在Angular中: 我想要一个可观察的对象来处理此数据...
SyntaxError:意外令牌{在JSON.parse()位置12的JSON中
src / app / myS.service.ts(24,54)中的错误:错误TS2322:无法将类型“文本”分配给类型“ json”
我如何从Node JS后端捕获“文本”数据...我在Node中使用npm cors,所以那里没有CORS错误
此处提供演示代码:https : //stackblitz.com/edit/angular-44sess
我的后端在以下代码段中:
app.get('/obs/responseWrite', cors(), function(req, res){
var j=0;
const headers = {
'Content-Type': 'text',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
'Access-Control-Max-Age': 2592000, // 30 days
};
res.writeHead(200,headers);
for(var i=0; i<50000; i++){
/* setInterval(function() { res.write("returning j:["+ j + "]. "); j=j+1; if(j>=100){res.end();} }, 1000); */
var myObj = { return …Run Code Online (Sandbox Code Playgroud)我有一个userService.spec.ts要测试的文件。代码就是这样。它调用了一个get函数,该函数调用了ADMIN_API_URL。我尝试测试给定的文件,但标题中提到了错误。我的user.service.spec.ts文件。
describe('Service: User service', () => {
let httpMock: HttpTestingController;
let userService: UserService;
let url: string;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [
{ provide: AUTH_API_URL, useValue: 'https://auth.example.com/api/'
},
{ provide: SSO_API_URL, useValue: 'https://sso.example.com/auth/api/' },
{ provide: WIT_API_PROXY, useValue: 'https://wit.example.com/api/'},
{ provide: ADMIN_API_URL, useValue: 'https://admin.example.com/api/'},
{ provide: REALM, useValue: 'realm' },
Broadcaster,
Logger,
AuthenticationService,
HttpHandler,
UserService
]
});
httpMock = TestBed.get(HttpTestingController);
url = TestBed.get(ADMIN_API_URL);
userService = TestBed.get(UserService);
});
it('Get user by user name …Run Code Online (Sandbox Code Playgroud) 在Angular中enum使用时如何传递给函数*ngIf?
我有以下代码:
export enum RoleType {
User='User',
Admin='Admin'
}
Run Code Online (Sandbox Code Playgroud)
组件功能
public hasAccess(role: RoleType) {
//check role type and return true or false
}
Run Code Online (Sandbox Code Playgroud)
组件html
<div id="adminDiv" *ngIf="hasAccess('Admin')">
</div>
Run Code Online (Sandbox Code Playgroud)
当我构建它时,它一直在抱怨。它不能将字符串转换为枚举,是否有办法解决?
使用RxJS v6很难从子集合中检索循环中每个项目的数据。无法迭代从HTTP调用检索的throw数组。合并映射仅对需要在所有数组项目上执行的单个项目执行此操作。
我已经坚持了三天。我已经尝试了一切。问题在于,新的管道语法在为您提供组织代码的巧妙方法的同时,没有简单的方法来循环引发数据收集。无法使用地图javascript函数,因为它在可观察范围之外并且返回的项目不确定。在互联网上,我只能找到一个很好的单个mergeMap的基本示例。但是,我需要使用带有http调用的数组中的每个项目,并将响应附加到同一对象。
我从第三方无法控制的两个端点开始。我嘲笑了一些示例API来说明。
端点1-返回所有项目ID: http:// localhost:3000 / contact
{
"name": "test",
"contact": [
{
"_id": "5c9dda9aca9c171d6ba4b87e"
},
{
"_id": "5c9ddb82ca9c171d6ba4b87f"
},
{
"_id": "5c9ddb8aca9c171d6ba4b880"
}
]
}
Run Code Online (Sandbox Code Playgroud)
端点2-返回单个项目信息: http:// localhost:3000 / contact / 5c9dda9aca9c171d6ba4b87e
[
{
"_id": "5c9dda9aca9c171d6ba4b87e",
"firstName": "Luke",
"lastName": "Test",
"email": "vgadgf@adsgasdg.com",
"created_date": "2019-03-29T08:43:06.344Z"
}
]
Run Code Online (Sandbox Code Playgroud)
期望的结果-通过使用RxJs v6 +返回带有嵌套数据的Observable:
{
"name": "test",
"contact": [
{
"_id": "5c9dda9aca9c171d6ba4b87e".
"relationship": {
"_id": "5c9dda9aca9c171d6ba4b87e",
"firstName": "Luke",
"lastName": "Test",
"email": "vgadgf@adsgasdg.com",
"created_date": "2019-03-29T08:43:06.344Z"
}
},
{
"_id": "5c9ddb82ca9c171d6ba4b87f",
"relationship": {
"_id": …Run Code Online (Sandbox Code Playgroud) 如何在不使用angular 7的情况下获取完整的当前URL window.location.href?
例如,假设我当前的网址是 http://localhost:8080/p/drinks?q=cold&price=200
如何获得完整的URL而不仅仅是完整的URL /p/drinks?q=cold&price=200?
我已经尝试过使用this.router.url此命令,但/p/drinks?q=cold&price=200不能提供完整的主机名。
我不想使用的window.location.href原因是它导致ng-toolkit / universal中的渲染出现问题
我尝试遵循此解决方案,这似乎与我存在相同的问题,并且也进行了更新
这是我的代码
windowProvider.js
import { InjectionToken, FactoryProvider } from '@angular/core';
export const WINDOW = new InjectionToken<Window>('window');
const windowProvider: FactoryProvider = {
provide: WINDOW,
useFactory: () => window
};
export const WINDOW_PROVIDERS = [
windowProvider
];
Run Code Online (Sandbox Code Playgroud)
在app.module.ts中
@NgModule({
.......
providers:[
.......
windowProvider
]
})
Run Code Online (Sandbox Code Playgroud)
在我的必填页面中:
import {WINDOW as WindowFactory} from '../../factory/windowProvider';
......
constructor(private router: Router, private helper: Helpers, …Run Code Online (Sandbox Code Playgroud) 嗨,我今晚将项目从V7升级到了V8,阅读@viewChild时遇到了很多错误,这是由于他们进行了新的更新。我在所有@viewChild中都添加了{static:true},但随后遇到了我设置如下的这些触发器:
@ViewChild('tTaskTeam', { read: MatAutocompleteTrigger }) autoCompleteForTaskTeamTrigger: MatAutocompleteTrigger;
@ViewChild('tofficeUser', { read: MatAutocompleteTrigger }) officeUsersautoCompleteInputTrigger: MatAutocompleteTrigger;
@ViewChild('recipientType', { read: MatAutocompleteTrigger }) recipientTypeTrigger: MatAutocompleteTrigger;
Run Code Online (Sandbox Code Playgroud)
该viewChild只接受两个参数,我不能添加三个。因此,我读了:MatautocompleteTrigger出去,它破坏了我要执行的自动完成功能。
这是我收到的错误消息:
类型'{的参数为:typeof MatAutocompleteTrigger; }'不可分配给'{read ?: any; 静态:布尔值;}'。类型'{缺少属性'static',读取:typeof MatAutocompleteTrigger; }”,但类型为“ {必读?:任何;静态:布尔值;}'。ts(2345)core.d.ts(8066,9):此处声明为“静态”。
我添加了这些触发器,以在用户输入非所选选项列表中的字符时触发。因此它将清除并向用户显示一条消息,让他们再次选择。
这是完整的实现: HTML
<mat-form-field appearance="outline" class="task-info-form-field">
<input tab-directive #tTaskTeam matInput (keyup.enter)="chooseFirstOption(autoCompleteForTaskTeam)" [matAutocomplete]="autoCompleteForTaskTeam" formControlName="tTaskTeam" matTooltip="You can search and it will try to autocomplete the name for you!" placeholder="Select Group">
<mat-autocomplete #autoCompleteForTaskTeam='matAutocomplete' [displayWith]="displayTeamName">
<mat-option class="matAutoCompleteSelect" *ngFor="let user of filteredOptions | async" [value]="user">
<span>{{ user.TeamName }}</span> …Run Code Online (Sandbox Code Playgroud) angular7 ×10
angular ×8
javascript ×2
rxjs ×2
angular6 ×1
angular8 ×1
chunked ×1
enums ×1
node.js ×1
observable ×1
rxjs6 ×1
snackbar ×1
typescript ×1
unit-testing ×1
upgrade ×1