Tworzę prostą aplikację w Angularu (Angular2 RC4) i mam problem z uruchomieniem aplikacji z serwerem na żywo w usłudze nodejs.Powiązanie własności ngif nie jest używane przez żadną dyrektywę we wbudowanym szablonie
Chciałbym pomóc, co mogę zrobić, aby obejść błąd pojawiający się w konsoli Chrome.
Erro w konsoli Chrome:
browser_adapter.ts:82
EXCEPTION: Template parse errors:
Property binding ngif not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the "directives" section. ("
</video-list>
[ERROR ->]<video-detail *ngif="selectedVideo" [video]="selectedVideo">
</video-detail>"): [email protected]:0**
app.component.ts
import {Input, Output, Component} from '@angular/core'
import {Config} from './config.service'
import {Video} from './video'
import {VideoListComponent} from './videolist.component'
import {VideoDetailComponent} from './videodetail.component'
@Component({
selector: 'my-app',
templateUrl: 'app/app.component.html',
directives: [VideoListComponent, VideoDetailComponent]
})
export class AppComponent {
title = Config.TITLE_PAGE;
videos: Array<Video>;
selectedVideo : Video;
constructor() {
this.videos = [
new Video(1, "Test", "www.test.com", "Test Description"),
new Video(2, "Test 2", "www.test2.com")
]
}
onSelectVideo(video) {
//console.log(JSON.stringify(video));
this.selectedVideo = video;
}
}
app.component.html
<h1 class="jumbotron">
{{title}}
</h1>
<!-- conceito [binding] videos recebe os valores do AppComponent.ts-->
<video-list [videos]="videos"
(selectVideo)="onSelectVideo($event)">
</video-list>
<video-detail *ngif="selectedVideo" [video]="selectedVideo">
</video-detail>
package.json
{
"name": "angularbase",
"version": "1.0.0",
"description": "Projeto Base",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"projeto",
"base",
"angular",
"angular2"
],
"author": "Eduardo Cordeiro",
"license": "ISC",
"dependencies": {
"@angular/common": "^2.0.0-rc.4",
"@angular/compiler": "^2.0.0-rc.4",
"@angular/core": "^2.0.0-rc.4",
"@angular/forms": "^0.2.0",
"@angular/http": "^2.0.0-rc.4",
"@angular/platform-browser": "^2.0.0-rc.4",
"@angular/platform-browser-dynamic": "^2.0.0-rc.4",
"@angular/upgrade": "^2.0.0-rc.4",
"angular2-in-memory-web-api": "0.0.7",
"bootstrap": "^3.3.6",
"rxjs": "^5.0.0-beta.6",
"systemjs": "^0.19.27",
"zone.js": "^0.6.12"
}
}
systemjs.config.js
(function (global) {
// mapa de carregamento do systemjs
var map = {
'app': 'app', // 'dist',
'rxjs': 'node_modules/rxjs',
'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
'@angular': 'node_modules/@angular'
};
// pacotes que o systemjs pode carregar
// caso não encontre o arquivo no mapa
var packages = {
'app': { main: 'boot.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { defaultExtension: 'js' },
};
var packageNames = [
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@angular/router-deprecated',
'@angular/testing',
'@angular/upgrade',
];
// mapeia os pacotes do angular de acordo com o packageName acima
packageNames.forEach(function (pkgName) {
packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
});
var config = {
map: map,
packages: packages
}
if (global.filterSystemConfig) { global.filterSystemConfig(config); }
System.config(config);
})(this);
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"module": "system",
"sourceMap": true,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"watch": true
},
"exclude": [
"node_modules"
]
}
To prawda. Sprawdź, czy używasz GIT i Visual Studio. Podczas porównywania wersji danego pliku i kopiowania niektórych części, czasami zmieniano go na małe (lub może zrobiłem coś nie tak). Potem dostałem dużo tych błędów. Jeśli to nie ja jestem manekinem, to proszę uważaj :) – Sielu
Używam '* ngIf' i nadal otrzymuję ten błąd. Wydaje się to jednak naprawiać: https://stackoverflow.com/questions/42063686/cant-bind-to-ngif-since-it-isnt-a-known-property-of-div-in-production-buil –
To dobrze. Dziś trzeba nie tylko napisać nazwę dyrektywy z odpowiednią wielkością liter, ale również zaimportować 'CommonModule' (' BrowserModule' po prostu ponownie wyeksportować). Problem PO był jednak spowodowany wyłącznie kapitalizacją, ponieważ w RC4 nie było koncepcji modułów. –