我在AppModule中有RoomsComponent,它的路由是/ rooms.此外,我有一个懒惰的模块CompaniesModule与组件CompaniesComponent与路由/公司.
当我从AppModule重用RoomsComponent时,我正在尝试构建类似/ companies/{company_id}/rooms /的路由.
我不能这么做很长的RoomsComponent没有在CompaniesModule中声明,但这会引发一个错误,因为组件不能在多个模块中声明.
我试图通过使用路由器获取当前的路由器路径,但是当我这样做console.log(this.router.url)时返回"/",虽然我在"/ login".但是当我安慰整个this.router对象时,有一个url值为"/ login" 的属性.
这是来自app.component.ts的代码
export class AppComponent implements OnInit{
constructor(private router: Router) {}
ngOnInit(){
console.log(this.router);
}
}
Run Code Online (Sandbox Code Playgroud)
app.module.routing.ts
import {NgModule} from '@angular/core';
import {PreloadAllModules, RouterModule, Routes} from '@angular/router';
import {NotFoundComponent} from './not-found/not-found.component';
import {AuthGuard} from './auth/auth-guard.service';
const appRoutes: Routes = [
{ path: '', loadChildren: './first/first.module#FirstModule'},
{ path: 'login', loadChildren: './login/login.module#LoginModule'},
{ path: '404', component: NotFoundComponent, canActivate: [AuthGuard] },
{ path: '**', redirectTo: '/404'}
];
@NgModule({
imports: [RouterModule.forRoot(appRoutes, {preloadingStrategy: PreloadAllModules})],
exports: [RouterModule]
}) …Run Code Online (Sandbox Code Playgroud) 应用程序组件:
ngOninit(){
this.http.get('../assets/data/dummy.json').subscribe(result => {
this.favorites = result;
});
}
Run Code Online (Sandbox Code Playgroud)
测试名称:AppComponent 应在 h1 标记中呈现标题
Karma 消息:失败:http://localhost:9876/assets/data/dummy.json的 Http 失败响应:404 Not Found
如果我在 get 方法中将 json 的绝对路径设置为http://localhost:4200/assets/data/dummy.json,则错误消失
我正在尝试对“passwordConfirm”字段进行验证,但出现一个奇怪的错误:ERROR TypeError: Cannot read property 'get' of undefined
这是我的代码:
loginForm: FormGroup;
ngOnInit(){
this.loginForm = new FormGroup({
'email': new FormControl(null, [Validators.required, Validators.email]),
'password': new FormControl(null, Validators.required),
'passwordConfirm': new FormControl(null, [Validators.required, this.checkIfMatchingPasswords.bind(this)]),
});
}
checkIfMatchingPasswords() {
return this.loginForm.get('password').value === this.loginForm.get('passwordConfirm').value ? null : { notSame: true} // error
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从多个 http 请求中检索数据,我决定避免嵌套 subscribe()。我只想以异步等待风格编写代码。
const diagnostics = this.http.get(url, {params: params}).toPromise()
console.log(diagnostics);
Run Code Online (Sandbox Code Playgroud)
但我明白了:
// ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理以提取数据。
有没有办法避免回调?
.then(res => {}).catch()
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何处理HttpHeaders上的标头,以通过HttpClient将它们用于http请求.
const headers = new HttpHeaders();
headers.append('foo', 'bar');
headers.set('foo', 'bar');
console.log(headers.get('foo')) // null
Run Code Online (Sandbox Code Playgroud)
它只能这样工作:
const headers = new HttpHeaders().set('foo', 'bar');
console.log(headers.get('foo')) // bar
Run Code Online (Sandbox Code Playgroud)
有没有一种特殊的方法来添加标题?或者这是一个错误?
angular ×5
angular5 ×2
angular6 ×1
http-headers ×1
javascript ×1
observable ×1
routing ×1
rxjs ×1
unit-testing ×1