2017-11-06 11 views
0

두 요소가 있습니다. 하나는 ngFor 루프 내부에 있고 다른 하나는 외부에 있습니다. ngFor 루프 내에서 모든 관측 가능 값 (UsersName, SubmittedTime 등)에 액세스 할 수 있습니다. 그러나 for 루프 외부에서는 불가능합니다. 나는 그 필드에 접근 할 수있는 루프 밖에서 관측 할 수있는 상황에 접근 할 필요가있는 상황이있다. 그래서 ngModel을 사용하여이 작업을 수행하는 멋진 방법을 고안했지만 ngModel은 약간 까다 롭습니다. ngModel을 사용하여 루프 내부의 현재 참조를 가져 와서 루프 외부의 다른 곳으로 뱉어 낼 계획입니다. 나는 이것에 도움이 필요하다. 탭 밖에서 현재 선택된 매트 탭 정보를 사용합니다.


<mat-tab-group> 

           <-- LOOP STARTS HERE --> 
    <mat-tab label="{{ thing.FileName }}" *ngFor="let thing of collection | async"> 

        <-- MY NIFTY LITTLE TRICK (NOT SURE HOW TO MAKE IT WORK) --> 
     <input [(ngModel)]="thing.UsersName" name="UsersName" value="{{thing.UsersName}}"> 

           <-- MISCELLANEOUS CODE -->  
     <span *ngIf="thing.FileContentType == 'image/png' "> 
     <img class="ui rounded fluid image" src="{{thing.FileURL}}" style="pointer-events: none;"> 
     </span> 

    </mat-tab> 
           <-- LOOP ENDS HERE --> 

</mat-tab-group> 

<-- OUTSIDE OF MAT-TAB-GROUP --> 
<div class="content"> 
    <-- CURRENTLY SELECTED TAB'S 'USERSNAME' PROPERTY (DOESN'T WORK) --> 
    <a class="header">{{collection.UsersName}}</a> 
</div> 
타이프는

angularCollection: AngularFirestoreCollection<Submission>; 
collection: Observable<Submission[]>; 

this.angularCollection = this.afs.collection(path); 
this.collection = this.angularCollection.valueChanges(); 
+0

이 결과를 넣어 당신의 누구나 당신을 도울 수 있도록 여기에 수집하십시오. –

+0

무엇을 의미합니까? – FiringBlanks

답변

0

collectionUsersName 때에 프로퍼티없는 배열이다. 그 안에있는 객체는 이므로 collection[0].UsersName처럼 액세스 할 수 있습니다.

@Component({ 
    selector: 'tabs-template-label-example', 
    templateUrl: 'tabs-template-label-example.html', 
    styleUrls: ['./tabs-template-label-example.css'] 
}) 
export class TabsTemplateLabelExample { 
    tabIndex: number = 0; 
} 

some.component.html : 당신이 mat-tab-group

some.component.ts의 selectedIndex 재산 사용 필요 선택된 탭의 UsersName 때에 프로퍼티를 표시하려면

<div class="content"> 
    <!-- Show UsersName of selected tab --> 
    <a class="header">{{collection[tabIndex].UsersName}}</a> 
</div> 

<!-- set selected tab with two way data binding --> 
<mat-tab-group [selectedIndex]="tabIndex"> 

    <mat-tab label="{{ thing.FileName }}" *ngFor="let thing of collection | async"> 

    <input [(ngModel)]="thing.UsersName" name="UsersName" value="{{thing.UsersName}}"> 

    <span *ngIf="thing.FileContentType == 'image/png' "> 
     <img class="ui rounded fluid image" src="{{thing.FileURL}}" style="pointer-events: none;"> 
    </span> 

    </mat-tab> 

</mat-tab-group> 
+0

'[tabIndex]'와 함께, 심지어는 '{{submissions[0].UsersName}}'이 나에게 오류를 준다 : 정의되지 않은'UsersName '속성을 읽을 수 없다. TypeScript를 포함하도록 게시물을 업데이트했습니다. – FiringBlanks

+0

API 호출이 데이터를 반환 한 후에 UsersName을 표시하도록 엘비스 연산자'?'예 :'submissions [0] ?. UsersName'을 사용해야합니다. – Dhyey

+0

lmao elvis. 확인 오류가 사라졌지만 지금은 비어 있습니다. 내 데이터베이스에 가치가 있다는 것을 알고 있습니다. 명확히하기 위해, 내 입력은 현재 탭의 정보를 탭 밖으로 끌어 올리거나 다른 곳에서 사용하는 방법으로 만 존재합니다. 나는 가치를 위해 실제로 아무것도 넣지 않아도됩니까? 내가하려고하는 일이 옳은가? 나는 ngModel을 처음 사용합니다. – FiringBlanks