(function() {
"use strict";
var filterId = "colorPicker";
angular
.module('app')
.filter('colorPicker', colorPicker);
function colorPicker() {
return function (input) {
var colorCode = '#2980b9';
switch (input) {
case 1:
colorCode = '#16a085';
break;
case 2:
colorCode = '#a38761';
break;
case 3:
colorCode = '#8e44ad';
break;
case 4:
colorCode = '#ffa800';
break;
case 5:
colorCode = '#d95459';
break;
case 6:
colorCode = '#8eb021';
break;
default:
}
return colorCode;
};
}
})();
필터를 같이 사용된다 이 : ng-attr-style="background-color: {{ $index | colorPicker }}"
이것은 AngularJS와 응용 프로그램에서 작동하지만 하이브리드 응용 프로그램에서 다음과 같은 오류 얻을 : angular.js:14525 Error: [$injector:unpr] Unknown provider: colorPickerFilterProvider <- colorPickerFilter
그 전에이 같이 필터가 AngularJS와 코드에서 호출됩니다. 실제로 Angular 5 코드가 거의 없습니다. 나는 기존 코드를 그대로 실행하려고 시도했지만 하이브리드 앱에서는 실행하려고한다. 이전과 같이 필터를 사용할 수 없어야합니까?
업데이트 나는이 다른 오류가 나는 컨트롤러에 대해지고있어 관련이 있다고 생각
:
[$controller:ctrlreg] The controller with the name 'myController' is not registered.
내가 스크립트 파일이 성공적으로 다운로드 볼 수 있고 오류가 발생하지되고있다 언제 내 app.module.ts
AngularJS 부트 스트랩. 사실, AngularJS가 주입되지 않고 globalVars
에 대한 오류가 발생했기 때문에 이것이 확실합니다. (이것은 더 이상 사용하지 않는 면도기 뷰에서 정의되었지만) 오류가 TypeScript에서 다시 생성 된 후에 사라졌습니다. AngularJS가 사용할 수 있도록 "다운 그레이드"했습니다.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { FormsModule } from '@angular/forms';
import { downgradeInjectable, UpgradeModule } from '@angular/upgrade/static';
import { AppComponent } from './app.component';
import { GlobalVarsService } from './core/global-vars.service';
declare var angular: any;
angular.module('app', []).factory('globalVars', downgradeInjectable(GlobalVarsService));
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
UpgradeModule
],
providers: [
GlobalVarsService
],
bootstrap: [AppComponent]
})
export class AppModule {
constructor(private upgrade: UpgradeModule) {
this.upgrade.bootstrap(document.body, ['app'], { strictDi: true });
}
}
그래서 파일이 다운로드 및 실행 중이지만 컨트롤러와 필터 (및 기타 항목)는 앱에서 찾을 수 없습니다. 이전 코드를 "old"라는 폴더에 넣은 다음 .angular-cli.json
을 업데이트하면이 파일을 빌드시 출력에 복사 할 수 있으므로 index.html의 <script>
태그를 통해 참조 할 수 있습니다. 이게 효과가 있겠지, 그렇지? 또는 파일을 Angular 5 파일과 함께 번들로 제공해야합니까?
// .angular-cli.json section
"assets": [
"assets",
{ "glob": "**/*", "input": "../old/app/", "output": "./app/" },
{ "glob": "**/*", "input": "../old/Content/", "output": "./Content/" },
{ "glob": "**/*", "input": "../old/Scripts/", "output": "./Scripts/" },
"favicon.ico"
],