As a newcomer to Angular, I have successfully created a small application that requires a sortable table. Everything works well in Angular-cli development server during development mode (using ng serve
).
I've experimented with implementing the table using both ng2-table and angular-table libraries, so I don't think the issue lies with either of these libraries.
However, when I compile the application using ng build --prod
for deployment on my staging server, I encounter the following error in the browser console when trying to access the application:
zone.js:461 Unhandled Promise rejection: Template parse errors:
Can't bind to 'rowsOnPageSet' since it isn't a known property of 'mfBootstrapPaginator'. (" <td colspan="3">
<mfBootstrapPaginator [ERROR ->][rowsOnPageSet]="[10,25,100]"></mfBootstrapPaginator>
</td>
"): a@42:62 ; Zone: <root> ; Task: Promise.then ; Value:
Template parse errors:↵Can't bind to 'rowsOnPageSet' since it isn't a known property of 'mfBootstrapPaginator'. (" <td colspan="3">↵ <mfBootstrapPaginator [ERROR ->][rowsOnPageSet]="[10,25,100]"></mfBootstrapPaginator>↵ </td>↵ "): a@42:62"
I have refactored my code to align with Angular 2.0.0RC5, utilizing the new @NgModule
decorator.
Any assistance or guidance you can provide would be greatly appreciated, as I am currently stuck.
Thank you
JT
Note: I attempted to temporarily specify the DataTableDirectives
as a directive under the component's @Component
decorator, but this did not resolve the issue.
app.module.ts
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {HttpModule} from '@angular/http';
import {DataTableDirectives} from 'angular2-datatable/datatable';
import {AppComponent, APP_ROUTER_PROVIDERS, APP_ROUTES} from './';
import {MapToIterable} from './utils';
import {ServerDataService} from './services';
import {HomeComponent, DecoderStatusComponent, ActivityListComponent, PassingsComponent} from './components';
@NgModule({
imports: [
APP_ROUTES,
BrowserModule,
HttpModule
],
declarations: [
AppComponent,
DecoderStatusComponent,
ActivityListComponent,
PassingsComponent,
HomeComponent,
MapToIterable,
DataTableDirectives
],
providers: [
APP_ROUTER_PROVIDERS,
ServerDataService
],
bootstrap: [AppComponent]
})
export class AppModule {
}
system-config.ts
/*******************************
* User Configuration.
*******************************/
/** Map relative paths to URLs. */
const map: any = {
'lodash': 'vendor/lodash',
'rxjs': 'vendor/rxjs',
'angular2-datatable': 'vendor/angular2-datatable',
'ng2-bootstrap': 'vendor/ng2-bootstrap',
'moment': 'vendor/moment'
};
/** User packages configuration. */
const packages: any = {
'lodash': { defaultExtension: 'js', main: 'lodash.js' },
'rxjs': { defaultExtension: 'js' },
'angular2-datatable': { defaultExtension: 'js' },
'moment': { format: 'cjs', defaultExtension: 'js' },
'ng2-bootstrap': { format: 'cjs', defaultExtension: 'js' }
};
/*******************************
* Everything underneath this line is managed by the CLI.
*******************************/
const barrels: string[] = [
// Angular specific barrels.
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/forms',
'@angular/http',
'@angular/router',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
// Thirdparty barrels.
// App specific barrels.
'app',
'app/shared',
'app/components',
'app/model',
'app/services',
'app/utils'
/** @cli-barrel */
];
const cliSystemConfigPackages: any = {};
barrels.forEach((barrelName: string) => {
cliSystemConfigPackages[barrelName] = { main: 'index' };
});
/** Type declaration for ambient System. */
declare var System: any;
// Apply the CLI SystemJS configuration.
System.config({
map: {
'@angular': 'vendor/@angular',
'rxjs': 'vendor/rxjs',
'main': 'main.js'
},
packages: cliSystemConfigPackages
});
// Apply the user's configuration.
System.config({ map, packages });
Passings.html
<div class="panel-body">
<div class="row">
<div class="col-xs-12 col-md-12">
<table class="table table-striped" [mfData]="data" #mf="mfDataTable" [mfRowsOnPage]="10">
<thead>
<tr>
<th>Passing</th>
<th>Date</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of mf.data">
<td>{{item[0]}}</td>
<td>{{item[1]}}</td>
<td>{{item[2]}}</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">
<mfBootstrapPaginator [rowsOnPageSet]="[10,25,100]"></mfBootstrapPaginator>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>