Angular2 / Nativescript:嵌套StackLayouts时出现奇怪的“意外标记”错误

时间:2017-02-24 12:10:13

标签: nativescript angular2-nativescript

我正忙着使用一个Angular2 Nativescript应用程序,该应用程序之前工作得非常好,但是在将输入字段移动到我的视图的另一部分后,我得到以下错误,说出意外的结束标记“StackLayout”...任何想法可能导致这个?可以嵌套在彼此内的堆栈布局数量是否有限制?我移动到视图的不同部分的输入字段是qty输入字段...

我得到的错误:

JS: ns-renderer: ERROR BOOTSTRAPPING ANGULAR
JS: ns-renderer: Template parse errors:
JS: Unexpected closing tag "StackLayout" ("Field class="input input-border" hint="Enter Quantity" keyboardType="number" [(ngModel)]="qty">
JS:                             [ERROR ->]</StackLayout>
JS:                             <Button class="btn btn-primary pull-right font-awesome" text="&#xf058;  Capture" ("): StockTakeComponent@37:4
JS: Unexpected closing tag "StackLayout" ("me" text="&#xf058;  Capture" (tap)="capture()" [isEnabled]="qty !== '' && qty != null"></Button>
JS:                     [ERROR ->]</StackLayout>
JS:             </StackLayout>
JS:
JS: "): StockTakeComponent@39:3
JS: Unexpected closing tag "StackLayout" (";  Capture" (tap)="capture()" [isEnabled]="qty !== '' && qty != null"></Button>
JS:                     </StackLayout>
JS:             [ERROR ->]</StackLayout>
JS:
JS:             <StackLayout *ngFor="let item of stockTakeDetailList" *ngIf="stockTakeDetailList.l"): StockTakeComponent@40:2
JS: Unexpected closing tag "StackLayout" ("nt-awesome" text="&#xf1f8; remove" (tap)="removeCaptureItem(item.IDKey)"></Button>
JS:     </StackLayout>
JS:     [ERROR ->]</StackLayout>
JS: </StackLayout>"): StockTakeComponent@47:1
JS: Unexpected closing tag "StackLayout" ("
JS:     </StackLayout>
JS:     </StackLayout>
JS: [ERROR ->]</StackLayout>"): StockTakeComponent@48:0
JS:
JS: Error: Template parse errors:
JS: Unexpected closing tag "StackLayout" ("Field class="input input-border" hint="Enter Quantity" keyboardType="number" [(ngModel)]="qty">
JS:                             [ERROR ->]</StackLayout>
JS:                             <Button class="btn btn-primary pull-right font-awesome" text="&#xf058;  Capture" ("): StockTakeComponent@37:4
JS: Unexpected closing tag "StackLayout" ("me" text="&#xf058;  Capture" (tap)="capture()" [isEnabled]="qty !== '' && qty != null"></Button>
JS:                     [ERROR ->]</StackLayout>
JS:             </StackLayout>
JS:
JS: "): StockTakeComponent@39:3
JS: Unexpected closing tag "StackLayout" (";  Capture" (tap)="capture()" [isEnabled]="qty !== '' && qty != null"></Button>
JS:                     </StackLayout>
JS:             [ERROR ->]</StackLayout>
JS:
JS:             <StackLayout *ngFor="let item of stockTakeDetailList" *ngIf="stockTakeDetailList.l"): StockTakeComponent@40:2
JS: Unexpected closing tag "StackLayout" ("nt-awesome" text="&#xf1f8; remove" (tap)="removeCaptureItem(item.IDKey)"></Button>
JS:     </StackLayout>
JS:     [ERROR ->]</StackLayout>
JS: </StackLayout>"): StockTakeComponent@47:1
JS: Unexpected closing tag "StackLayout" ("
JS:     </StackLayout>
JS:     </StackLayout>
JS: [ERROR ->]</StackLayout>"): StockTakeComponent@48:0
JS:     at DirectiveNormalizer.normalizeLoadedTemplate (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/@angular/compiler/bundles/compiler.umd.js:13337:21)
JS:     at /data/data/org.nativescript.barcodescanner/files/app/tns_modules/@angular/compiler/bundles/compiler.umd.js:13324:53
JS:     at ZoneDelegate.invoke (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:190:28)
JS:     at Zone.run (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:83:43)
JS:     at /data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:449:57
JS:     at ZoneDelegate.invokeTask (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:223:37)
JS:     at Zone.runTask (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:123:47)
JS:     at drainMicroTaskQueue (/data/data/org.nativescript.barcodescanner/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:355:35)
1:54:21 PM - Compilation complete. Watching for file changes.

这是我的组件HTML代码:

<StackLayout class="page">
    <ActionBar title="Stock Take" android.icon="res://icon" android.iconVisibility="always"></ActionBar>
    <StackLayout *ngIf="!stockTaking">
        <Label class="h1 title m-x-auto" text="Begin Stock Take?"></Label>
        <StackLayout class="form">  
            <StackLayout class="input-field">               
                <ListView [items]="activeStockTakes" class="list-group" (itemTap)="selectActiveStockTake($event.target.value)">
                <template let-activeStockTake="item">
                <StackLayout>
                    <Label class="list-group-item" [text]="activeStockTake.UserCode + ' - ' + activeStockTake.Comment"></Label>
                </StackLayout>
                </template>
                </ListView>
                <TextField class="input input-border tf" hint="Enter Sheet Number" placeholderColor="white" [(ngModel)]="sheetNo"></TextField>
                <TextField class="input input-border" hint="Enter Bin Number" [(ngModel)]="binNo"></TextField>          
            </StackLayout>
            <Button class="btn btn-primary font-awesome" text="&#xf04b; Start Stock Take" (tap)="startStockTake()" [isEnabled]="sheetNo !== '' && sheetNo != null && binNo !== '' && binNo != null"></Button>
        </StackLayout>
    </StackLayout>
    <StackLayout *ngIf="stockTaking">
        <StackLayout class="form">
            <Button id="endStockTakeBtn" class="btn pull-right font-awesome" text="&#xf00d; End Stock Take" (tap)="endStockTake()"></Button>
            <StackLayout class="input-field">       
                <TextField class="input input-border" hint="Enter Barcode" keyboardType="number" [(ngModel)]="barcode"></TextField>     
            </StackLayout>

            <Button class="btn btn-primary pull-right" text="Scan" (tap)="scan()" [isEnabled]="barcode !== '' && barcode != null"></Button>

        </StackLayout>
        <StackLayout *ngIf="product" class="m-x-auto">
            <Label class="label text-primary" [text]="'Description:  ' + product.Description"></Label>
            <Label class="label text-primary" [text]="'POS Description: ' + product.POSDescription"></Label>
            <Label class="label text-primary" [text]="'POS price:  R' + product.POSPrice"></Label>
            <Label class="label text-primary" [text]="'Stock On Hand:  ' + product.StockOnHand"></Label>
            <StackLayout class="form">
                <StackLayout class="input-field">
                    <TextField class="input input-border" hint="Enter Quantity" keyboardType="number" [(ngModel)]="qty">
                </StackLayout>              
                <Button class="btn btn-primary pull-right font-awesome" text="&#xf058;  Capture" (tap)="capture()" [isEnabled]="qty !== '' && qty != null"></Button>
            </StackLayout>
        </StackLayout>

        <StackLayout *ngFor="let item of stockTakeDetailList" *ngIf="stockTakeDetailList.length > 0">
            <Label [text]="'Name: ' + item.ProductDetail_Name" class="text-primary"></Label>            
            <Label text="'Qty: ' + item.Qty" class="text-primary"></Label>          
            <Button class="btn btn-primary pull-left font-awesome" text="&#xf1f8; remove" (tap)="removeCaptureItem(item.IDKey)"></Button>
    </StackLayout>
    </StackLayout>
</StackLayout>

2 个答案:

答案 0 :(得分:2)

以下是您的问题:

 <StackLayout class="input-field">
       <TextField class="input input-border" hint="Enter Quantity" keyboardType="number" [(ngModel)]="qty">
 </StackLayout>  

您忘记了结束</TextField>下一个结束标记是/StackLayout,它会引发错误,因为它与之前的TextField不匹配。

答案 1 :(得分:0)

我得到了相同的错误,这个以下行导致使用字体真棒时的错误

chgrp 1000 /path/filename

并尝试使用:fonticon-nativescript angular

解决此问题