คำถามติดแท็ก angular

คำถามเกี่ยวกับ Angular (เพื่อไม่ให้สับสนกับ AngularJS) ซึ่งเป็นกรอบเว็บจาก Google ใช้แท็กนี้สำหรับคำถามเชิงมุมซึ่งไม่เจาะจงสำหรับแต่ละเวอร์ชัน สำหรับเฟรมเวิร์กเว็บ AngularJS (1.x) ที่เก่ากว่าให้ใช้แท็ก angularjs

7
Angular 2 - Routing - CanActivate ทำงานกับ Observable
ฉันมีAuthGuard (ใช้สำหรับการกำหนดเส้นทาง) ที่ดำเนินการCanActivate canActivate() { return this.loginService.isLoggedIn(); } ปัญหาของฉันคือว่า CanActivate ผลขึ้นอยู่กับ http-ได้รับผล - The LoginServiceส่งกลับสังเกต isLoggedIn():Observable<boolean> { return this.http.get(ApiResources.LOGON).map(response => response.ok); } ฉันจะนำสิ่งเหล่านี้มารวมกัน - ทำให้ CanActivate ขึ้นอยู่กับสถานะแบ็กเอนด์ได้อย่างไร # # # # # # แก้ไข: โปรดทราบว่าคำถามนี้มาจากปี 2559 - มีการใช้เชิงมุม / เราเตอร์ในช่วงแรก ๆ # # # # # #

13
Angular 4.3 - พารามิเตอร์ชุด HttpClient
let httpParams = new HttpParams().set('aaa', '111'); httpParams.set('bbb', '222'); ทำไมถึงใช้ไม่ได้? ตั้งค่าเฉพาะ 'aaa' และไม่ใช่ 'bbb' นอกจากนี้ฉันมีวัตถุ {aaa: 111, bbb: 222} ฉันจะตั้งค่าทั้งหมดโดยไม่วนซ้ำได้อย่างไร อัปเดต (ดูเหมือนจะใช้งานได้ แต่จะหลีกเลี่ยงการวนซ้ำได้อย่างไร) let httpParams = new HttpParams(); Object.keys(data).forEach(function (key) { httpParams = httpParams.append(key, data[key]); });

7
สิ่งที่ใช้แทน :: ng-deep
ฉันกำลังพยายามจัดรูปแบบองค์ประกอบที่วางโดยเต้าเสียบเราเตอร์ในเชิงมุมและต้องการให้แน่ใจว่าองค์ประกอบที่สร้างขึ้นมีความกว้าง 100% จากคำตอบส่วนใหญ่ฉันเห็นว่าฉันควรใช้::ng-deepตัวเลือก แต่จากเอกสารของ Angular มันกำลังถูกเลิกใช้ มีทางเลือกให้::ng-deepหรือไม่?
94 html  css  angular 

5
การแทนที่ document.getElementById ใน angular4 / typescript?
ดังนั้นฉันกำลังทำงานกับ angular4 ในงานฝึกหัดของฉันและนี่เป็นเรื่องใหม่สำหรับฉัน โชคดีเพื่อที่จะได้รับองค์ประกอบ html และค่าที่ฉันใช้ <HTMLInputElement> document.getElementByIdหรือ <HTMLSelectElement> document.getElementById ฉันสงสัยว่ามีการแทนที่สิ่งนี้ในเชิงมุมหรือไม่

12
ฉันจะนำทางไปยังเส้นทางหลักจากเส้นทางลูกได้อย่างไร
ปัญหาของฉันค่อนข้างคลาสสิก ฉันมีส่วนส่วนตัวของแอปพลิเคชันซึ่งอยู่เบื้องหลังไฟล์login form. เมื่อการเข้าสู่ระบบสำเร็จระบบจะไปยังเส้นทางลูกสำหรับแอปพลิเคชันผู้ดูแลระบบ ปัญหาของฉันคือฉันไม่สามารถใช้งานได้global navigation menuเนื่องจากเราเตอร์พยายามกำหนดเส้นทางในฉันAdminComponentแทนที่จะเป็นAppCompomentไฟล์. ดังนั้นการนำทางของฉันเสีย ปัญหาอีกประการหนึ่งคือหากมีผู้ต้องการเข้าถึง URL โดยตรงฉันต้องการเปลี่ยนเส้นทางไปยังเส้นทาง "เข้าสู่ระบบ" หลัก แต่ฉันไม่สามารถทำให้มันทำงานได้ สำหรับฉันแล้วดูเหมือนว่าสองประเด็นนี้จะคล้ายกัน มีความคิดว่าจะทำได้อย่างไร?

2
ความแตกต่างระหว่างโหมดการผลิตและโหมดการพัฒนาใน Angular2 คืออะไร?
ด้วยเหตุผลบางประการฉันต้องเรียกใช้แอปในโหมดการผลิต ความแตกต่างระหว่างโหมดเหล่านี้คืออะไร?

8
จะทดสอบส่วนประกอบที่ขึ้นอยู่กับพารามิเตอร์จาก ActivatedRoute ได้อย่างไร
ฉันกำลังทดสอบหน่วยส่วนประกอบที่ใช้ในการแก้ไขวัตถุ อ็อบเจ็กต์มีเอกลักษณ์idที่ใช้เพื่อดึงอ็อบเจ็กต์เฉพาะจากอาร์เรย์ของอ็อบเจ็กต์ที่โฮสต์ในเซอร์วิส เฉพาะidถูกจัดหาผ่านพารามิเตอร์ที่ส่งผ่านทางเส้นทางโดยเฉพาะผ่านActivatedRouteคลาส ตัวสร้างมีดังนี้: constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) { } ngOnInit() { this._curRoute.params.subscribe(params => { this.userId = params['id']; this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0]; ฉันต้องการเรียกใช้การทดสอบหน่วยพื้นฐานในส่วนประกอบนี้ อย่างไรก็ตามฉันไม่แน่ใจว่าฉันจะฉีดidพารามิเตอร์ได้อย่างไรและส่วนประกอบต้องการพารามิเตอร์นี้ โดยวิธีการ: ฉันมีล้อเลียนสำหรับSessionบริการอยู่แล้วดังนั้นจึงไม่ต้องกังวลที่นั่น

3
วิธีโยนข้อผิดพลาดจากตัวดำเนินการแผนที่ RxJS (เชิงมุม)
ฉันต้องการโยนข้อผิดพลาดจากตัวดำเนินการแผนที่ที่สังเกตได้ตามเงื่อนไข ตัวอย่างเช่นหากไม่ได้รับข้อมูล API ที่ถูกต้อง โปรดดูรหัสต่อไปนี้: private userAuthenticate( email: string, password: string ) { return this.httpPost(`${this.baseApiUrl}/auth?format=json&provider=login`, {userName: email, password: password}) .map( res => { if ( res.bearerToken ) { return this.saveJwt(res.bearerToken); } else { // THIS DOESN'T THROW ERROR -------------------- return Observable.throw('Valid token not returned'); } }) .catch( err => Observable.throw(this.logError(err) …

14
ไอคอน Angular Material ไม่ทำงาน
ฉันได้ติดตั้งวัสดุสำหรับเชิงมุมแล้ว ฉันนำเข้าในโมดูลแอป MatIconModule (with import { MatIconModule } from '@angular/material/icon';) ฉันได้เพิ่มไว้ภายใต้การนำเข้า ngmodule ของฉันด้วย: @NgModule({ imports: [ //... MatIconModule, //... ฉันนำเข้าสไตล์ชีททั้งหมดแล้ว และฉันยังนำเข้าในส่วนประกอบแอปของฉันซึ่งจริง ๆ แล้ว (พยายาม) ใช้ (โดยมีimport {MatIconModule} from '@angular/material/icon';บรรทัดอื่นอยู่ตอนต้น) แต่ไอคอนวัสดุยังไม่ปรากฏ ตัวอย่างเช่นในบรรทัดนี้: <button mat-icon-button (click)="snav.toggle()"><mat-icon>menu</mat-icon></button> ฉันคาดหวังสิ่งนี้: แต่ฉันได้รับสิ่งนี้: มีข้อเสนอแนะหรือไม่?

8
อินพุตแบบฟอร์มที่กำหนดเองเชิงมุม 2
ฉันจะสร้างส่วนประกอบที่กำหนดเองซึ่งจะทำงานเหมือนกับ<input>แท็กเนทีฟได้อย่างไร ฉันต้องการให้คอนโทรลฟอร์มที่กำหนดเองของฉันสามารถรองรับ ngControl, ngForm, [(ngModel)] ตามที่ฉันเข้าใจฉันต้องใช้อินเทอร์เฟซบางอย่างเพื่อให้การควบคุมฟอร์มของฉันเองทำงานเหมือนกับเนทีฟ นอกจากนี้ดูเหมือนว่าคำสั่ง ngForm ผูกไว้สำหรับ<input>แท็กเท่านั้นใช่ไหม ฉันจะจัดการกับสิ่งนั้นได้อย่างไร? ให้ฉันอธิบายว่าทำไมฉันถึงต้องการสิ่งนี้เลย ฉันต้องการรวมองค์ประกอบอินพุตหลายรายการเพื่อให้สามารถทำงานร่วมกันเป็นอินพุตเดียวได้ มีวิธีอื่นในการจัดการกับสิ่งนั้นหรือไม่? ขออีกครั้ง: ฉันต้องการให้การควบคุมนี้เหมือนกับเนทีฟ การตรวจสอบความถูกต้อง ngForm การผูกแบบสองทาง ngModel และอื่น ๆ ps: ฉันใช้ typescript

4
การใช้อาร์เรย์จากวัตถุที่สังเกตได้ด้วย ngFor และ Async Pipe Angular 2
ฉันพยายามทำความเข้าใจวิธีใช้ Observables ใน Angular 2 ฉันมีบริการนี้: import {Injectable, EventEmitter, ViewChild} from '@angular/core'; import {Observable} from "rxjs/Observable"; import {Subject} from "rxjs/Subject"; import {BehaviorSubject} from "rxjs/Rx"; import {Availabilities} from './availabilities-interface' @Injectable() export class AppointmentChoiceStore { public _appointmentChoices: BehaviorSubject<Availabilities> = new BehaviorSubject<Availabilities>({"availabilities": [''], "length": 0}) constructor() {} getAppointments() { return this.asObservable(this._appointmentChoices) } asObservable(subject: …

9
ใน Angular 2 จะตรวจสอบได้อย่างไรว่า <ng-content> ว่างหรือไม่
สมมติว่าฉันมีส่วนประกอบ: @Component({ selector: 'MyContainer', template: ` &lt;div class="container"&gt; &lt;!-- some html skipped --&gt; &lt;ng-content&gt;&lt;/ng-content&gt; &lt;span *ngIf="????"&gt;Display this if ng-content is empty!&lt;/span&gt; &lt;!-- some html skipped --&gt; &lt;/div&gt;` }) export class MyContainer { } ตอนนี้ฉันต้องการแสดงเนื้อหาเริ่มต้นบางส่วนหาก&lt;ng-content&gt;สำหรับส่วนประกอบนี้ว่างเปล่า มีวิธีง่ายๆในการดำเนินการนี้โดยไม่ต้องเข้าถึง DOM โดยตรงหรือไม่?

5
ฉันจะสร้างสิ่งที่สังเกตได้ด้วยความล่าช้าได้อย่างไร
คำถาม สำหรับวัตถุประสงค์ในการทดสอบผมสร้างObservableวัตถุที่แทนที่สังเกตได้ว่าจะได้รับการส่งกลับโดยการโทร http Httpเกิดขึ้นจริงกับ สิ่งที่สังเกตได้ของฉันถูกสร้างขึ้นด้วยรหัสต่อไปนี้: fakeObservable = Observable.create(obs =&gt; { obs.next([1, 2, 3]); obs.complete(); }); สิ่งนี้คือสิ่งที่สังเกตได้นี้จะเปล่งออกมาทันที มีวิธีเพิ่มการหน่วงเวลาแบบกำหนดเองให้กับการปล่อยหรือไม่? ติดตาม ฉันลองสิ่งนี้: fakeObservable = Observable.create(obs =&gt; { setTimeout(() =&gt; { obs.next([1, 2, 3]); obs.complete(); }, 100); }); แต่ดูเหมือนจะไม่ได้ผล

3
onchange เทียบเท่าในเชิงมุม 2
ฉันใช้ onchange เพื่อบันทึกค่าช่วงอินพุตของฉันลงใน firebase แต่ฉันมีข้อผิดพลาดที่บอกว่าไม่ได้กำหนดฟังก์ชันของฉัน นี่คือหน้าที่ของฉัน saverange(){ this.Platform.ready().then(() =&gt; { this.rootRef.child("users").child(this.UserID).child('range').set(this.range) }) } นี่คือ html ของฉัน &lt;ion-item&gt; &lt;ion-row&gt; &lt;ion-col&gt;Rayon &lt;span favorite&gt;&lt;strong&gt; {{range}} km&lt;/strong&gt;&lt;/span&gt;&lt;/ion-col&gt; &lt;ion-col&gt;&lt;input type="range" name="points" min="0" max="40" [(ngModel)]="range" onchange="saverange()"&gt;&lt;/ion-col&gt; &lt;/ion-row&gt; &lt;/ion-item&gt; สิ่งที่เทียบเท่ากับ onchange ในเชิงมุมถ้ามีอยู่ ขอขอบคุณ
93 angular 

7
Angular2 ตั้งค่าสำหรับ formGroup
ดังนั้นฉันจึงมีรูปแบบที่ซับซ้อนสำหรับสร้างเอนทิตีและฉันต้องการใช้เพื่อแก้ไขเช่นกันฉันใช้ API รูปแบบเชิงมุมใหม่ ฉันจัดโครงสร้างแบบฟอร์มให้ตรงกับข้อมูลที่ฉันดึงมาจากฐานข้อมูลดังนั้นฉันจึงต้องการกำหนดค่าของแบบฟอร์มทั้งหมดให้กับข้อมูลที่ดึงมาที่นี่เป็นตัวอย่างของสิ่งที่ฉันต้องการทำ: this.form = builder.group({ b : [ "", Validators.required ], c : [ "", Validators.required ], d : [ "" ], e : [ [] ], f : [ "" ] }); this.form.value({b:"data",c:"data",d:"data",e:["data1","data2"],f:data}); PS: NgModel ใช้ไม่ได้กับ API รูปแบบใหม่และฉันไม่รังเกียจที่จะใช้การผูกข้อมูลทางเดียวในเทมเพลตเช่นเดียวกับใน &lt;input formControlName="d" value="[data.d]" /&gt; ที่ใช้งานได้ แต่จะเป็นความเจ็บปวดในกรณีของอาร์เรย์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.