标签: angular-library

无法绑定到 Directive('appHasAccess'),因为它不是“input”的已知属性

我创建了一个自定义属性指令库包并将其安装到 myProject 中,当我尝试使用此自定义指令时会引发错误。

错误错误:未捕获(承诺):错误:模板解析错误:无法绑定到“appHasAccess”,因为它不是“输入”的已知属性。

我使用的代码如下:

所有可能的尝试我都做了。任何人都知道我如何解决这个问题。

1.指令:HasAccessDirective.ts

@Directive({
  selector: '[appHasAccess]',
})

export class HasAccessDirective {

accessDetail = { 'a': 1 }
 @Input('appHasAccess') set appHasAccess(accessDetail: any) {
    // Based on right control enable/disable
    this.eleRef.nativeElement.disabled = this.appRights.hasRights(accessDetail);
}
constructor(private eleRef: ElementRef,
    private appRights: MyService) { }
}
Run Code Online (Sandbox Code Playgroud)

2.模块:DigiUserRightsModule.ts

   @NgModule({
        declarations: [
            HasAccessDirective
        ],
        imports: [
            CommonModule,
            HttpClientModule,
        ],
        exports: [
            HasAccessDirective
        ],
        providers: [UserRightsService]
    })

export class DigiUserRightsModule {
    static forRoot(): ModuleWithProviders {
        return {
            ngModule: DigiUserRightsModule,
            providers: [UserRightsService]
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

angularjs-directive angular angular-library angular5

5
推荐指数
1
解决办法
6054
查看次数

Angular 6 库管道

如何在 Angular 6 库中添加自定义管道以使其在我的主应用程序中可用?目前我正在这样做:lib.module.ts:

@NgModule({
  declarations: [
    SomePipe
  ],
  exports: [
   SomePipe
]})
Run Code Online (Sandbox Code Playgroud)

在 public_api.ts 中:

export * from './lib/pipes/some.pipe';
Run Code Online (Sandbox Code Playgroud)

在 app.module.ts 中:

import { LibModule } from 'lib';
@NgModule({
  ...
  imports: [
    LibModule
  ]
 ...
})
Run Code Online (Sandbox Code Playgroud)

我想使用管道{{ 'something' | some}},但transform方法SomePipe不叫。

pipe angular-pipe angular angular-library angular6

5
推荐指数
1
解决办法
2512
查看次数

Angular 库模块从工作区生成一个组件

我有一个用三个项目创建的 Angular 工作区。以及我刚刚创建了一个库,我希望在其中包含可重用的模块。

通常对于项目(应用程序和库),我运行以下命令来生成模块或组件:

ng g c component componentName --project=UserPortal

ng g c component componentName --project=myLibrary

但是现在我需要向其中的模块添加组件:

例如库: projects myLibrary src lib navigation-module Add Component here

对于应用项目模块: projects UserPortal src app userModule Add Component Here

我能够通过运行在工作区的库项目中创建一个模块:

ng generate module navigation-module --project=myLibrary

目前我必须通过命令行进入该目录才能创建一个组件。但我有一种感觉,我可以像所有其他命令一样从工作区执行此操作。这将是最有益的,而不必在目录之间进行命令行排列或来回切换。

快速概览:

  1. 在 Angular 工作区中创建一个库
  2. 在 Angular 工作区的库中创建了一个模块
  3. 想要从工作区的库中的模块内创建一个组件

module angular-module angular-components angular angular-library

5
推荐指数
1
解决办法
3568
查看次数

Angular 库模块从模块导出组件、服务等

我创建了一个 Angular 库。在我的库中,我希望通过在其中包含功能模块来使其变得干净:

例子:

Library
  NavigationModule
    NavigationSideBarComponent
    NavigationTopComponent
    Navigation Service
    etc

  GraphModule
    BarGraphComponent
    PieGraphComponent
Run Code Online (Sandbox Code Playgroud)

我的导航模块目前如下所示:

@NgModule({
  declarations: [
    NavigationSidebarComponent
  ],
  imports: [
    CommonModule,
    MatSidenavModule
  ],
  exports: [
    NavigationSidebarComponent
  ]
})
export class NavigationModule { }
Run Code Online (Sandbox Code Playgroud)

我的图书馆模块目前如下所示:

@NgModule({
  declarations: [LibraryComponent],
    imports: [
      NavigationModule
    ],
    exports: [
      LibraryComponent
      //NavigationSidebarComponent  <-- Did not work
    ]
 })
 export class LibraryModule { }
Run Code Online (Sandbox Code Playgroud)

我发现的大多数教程都使用一个仅包含组件的库,而没有其他内容,例如模块。我发现使用库中的模块的教程没有显示如何导出片段。

本质上,我想将此库导入到任何应用程序中,并能够NavigationSidebarComponent从库或服务中的模块调用或任何其他组件。

我将继续调查此事。

import export angular-module angular angular-library

5
推荐指数
2
解决办法
1万
查看次数

Angular Library Route Module 在应用程序中导入时不起作用

我需要有关我无法解决的问题的帮助。我正在研究 angular 7 库,以便为我的应用程序添加模块化,但是在应用程序中安装它时,库中定义的模块路由似乎不起作用。

我已经创建项目到 github 来重现问题:
Library test foo-lib
External Application foo-tester

在每个自述文件中,我都描述了如何重现此问题。

我创建了一个示例库 (foo-lib),其路由模块定义了子路由,然后我在同一工作区中的一个简单应用程序中构建并测试了它。一切正常,并且库路由已正确添加到测试应用程序中。在下一步中,我导出了构建的库,并通过 npm link 命令将其包含在另一个工作区中的另一个应用程序示例中,并在此应用程序上运行了 ng serve 命令。使用此配置,如果尝试实现库路由路径,我会收到一个错误,就好像它们没有添加到主路由模块中一样。

Foo-lib-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { MainComponent } from './components/main/main.component';
import { NewFooCmpComponent } from './components/new-foo-cmp/new-foo-cmp.component';

const UP_ROUTES: Routes = [
  { path: 'main_path',  component: MainComponent,
    children: [
      { path: 'child', component: NewFooCmpComponent }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(UP_ROUTES)],
  exports: [RouterModule]
})

export class FooLibRoutingModule { } …
Run Code Online (Sandbox Code Playgroud)

angular angular-router angular-library angular7

5
推荐指数
1
解决办法
8406
查看次数

AGM 角度谷歌地图以编程方式设置缩放

我正在使用 AGM(Angular Google Maps)和 OpenLayers。

我需要以编程方式设置我的 AGM 的缩放,但一直无法弄清楚它是如何工作的。

HTML 地图...

<div id="mapWrap" class="mapWrap" style="padding: 0px; width: 100%; height: 
100%; text-align: left">

  <agm-map  
    [latitude]="lat" 
    [longitude]="lng"
    [zoom]="currZoom" 
    [mapTypeId]="mapType" 
    [mapTypeControl]="mapControls" 
    [zoomControl]="mapControls" 
    [streetViewControl]="mapControls" 
  ></agm-map>

  <div id="map" class="map" style="padding: 0px; width: 100%; height: 100%;z-index: 0; position: absolute; opacity: 0.5"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

组件代码

import { Component, OnInit, ViewChild } from '@angular/core';
import { AgmMap } from '@agm/core';
import { GoogleMap } from '@agm/core/services/google-maps-types';

import olMap from 'ol/Map';
import TileLayer from 'ol/layer/Tile';
import View from 'ol/View';
import OSM …
Run Code Online (Sandbox Code Playgroud)

angular-google-maps angular-components angular angular-library openlayers-5

5
推荐指数
1
解决办法
6021
查看次数

纱线工作区隔离

我在空设置上遇到了一些纱线问题(当我在 npm 上没有任何版本的库时)。

我有一个多模块项目,结构如下:

root                        # Yarn workspace
 * packages
 |  * lib1-ws               # Angular workspace
 |  |  * projects
 |  |  |  * lib1
 |  |  |     * package.json
 |  |  * package.json
 |  |
 |  * lib2-ws               # Angular workspace
 |  |  * projects
 |  |  |  * lib2
 |  |  |     * package.json # peer depends on lib1
 |  |  * package.json       # depends on lib1
 |  |
 |  * lib3-ws               # Angular workspace
 |     * projects …
Run Code Online (Sandbox Code Playgroud)

angular angular-library yarn-workspaces

5
推荐指数
1
解决办法
1780
查看次数

带有 ionic 4 的自定义 angular 7 库 - 无法解决“../@ionic/angular/dist/core.ngfactory”构建产品错误

我们已经构建了小型 angular 7/ionic 4 库,我们希望通过 git url 安装在内部多个项目中使用。服务项目工作正常,所有从库中导入的工作正常。但是在运行时ng build --prod出现以下错误

ERROR in ./node_modules/edetail-core/edetail-core.ngfactory.js 
Module not found: Error: Can't resolve '../@ionic/angular/dist/core.ngfactory' in '/Users/user.name/Documents/ionic/edetails/node_modules/edetail-core'
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的设置 - 将所有内容移动到 devDependencies(主 package.json),从 peerDependencies(库 package.json)中添加和删除包。添加

"lib": {
    "entryFile": "src/public_api.ts",
    "externals": "@ionic/angular"
  }
Run Code Online (Sandbox Code Playgroud)

(lib ng-package.json) 但没有任何帮助。IonicModule 从导入'@ionic/angular'主库模块文件 (edetail-core.module.ts) 中导入。

这是 ng-package.json

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/edetail-core",
  "lib": {
    "entryFile": "src/public_api.ts"
  }
}
Run Code Online (Sandbox Code Playgroud)

库 package.json

{
  "name": "edetail-core",
  "version": "0.0.1",
  "peerDependencies": {
    "@angular/common": "^7.2.0",
    "@angular/core": "^7.2.0",
    "@ionic-native/core": "^5.0.0-beta",
    "rxjs": "^6.3.3",
    "@ionic/angular": "^4.0.0"
  }
} …
Run Code Online (Sandbox Code Playgroud)

ionic-framework angular angular-library ionic4

5
推荐指数
1
解决办法
1085
查看次数

如何在本地开发相互依赖的 Angular 7 库?(npm 链接问题)

我有两个角度库 NPM 包:

  • A有基本组件
  • A-BC具有组件时的组件构建一个与附加功能与整合BC库

一些组件A-BC从A类似导入import { MyThing } from 'A';

A-BC的 package.json 是:

"peerDependencies": {
   "A": 1.0.0,
   "BC": 4.0.0
},
"devDependencies": {
   "A": 1.0.0,
   "BC": 4.0.0
}
Run Code Online (Sandbox Code Playgroud)

我尝试的开发步骤是:

  1. npm link --only=production 在(内置版本) A
  2. npm link --only=production 在(内置版本) A-BC
  3. 在my-app,运行npm link A
  4. 在my-app,运行npm link A-BC
  5. 跑 my-app

找不到安装在任何地方my-app时编译失败。它们都作为符号链接文件夹正确地排列在彼此的旁边。我已经在启用和尝试过这个,但这没有帮助。A-BCAnode_modulespreserveSymlinkstsconfig.jsonangular.json

A可能是 的直接依赖A-BC,但是:

  • 双方 …

npm npm-link angular angular-library angular7

5
推荐指数
1
解决办法
2530
查看次数

打包 Angular 库以支持 Angular 8、9 和 10 的正确方法

随着 Angular 10 的发布,我将用于构建库 + 演示应用程序的 Angular 版本更新到版本 10。

\n

一般来说,这一切进展顺利,并且该库仍然与 Angular 的早期版本兼容,但此版本似乎并非如此(针对 Angular 9 的先前版本构建与 Angular 8 运行良好)。

\n

输出打字稿定义文件包括:

\n
import * as \xc9\xb5ngcc0 from \'@angular/core\';\n\n...\n\nstatic \xc9\xb5fac: \xc9\xb5ngcc0.\xc9\xb5\xc9\xb5FactoryDef<QrCodeComponent, never>;\nstatic \xc9\xb5cmp: \xc9\xb5ngcc0.\xc9\xb5\xc9\xb5ComponentDefWithMeta<QrCodeComponent, "qr-code", never, { "value": "value"; "size": "size"; "errorCorrectionLevel": "errorCorrectionLevel"; }, {}, never, never>;\n
Run Code Online (Sandbox Code Playgroud)\n

在 Angular 8 项目中使用时会导致这样的错误:

\n
 ERROR in node_modules/ng-qrcode/lib/qr-code.component.d.ts(7,25): error TS2694: Namespace \'"/ngqrcode-ng8-test/node_modules/@angular/core/core"\' has no exported member \'\xc9\xb5\xc9\xb5FactoryDef\'.\n    node_modules/ng-qrcode/lib/qr-code.component.d.ts(8,18): error TS2314: Generic type \'\xc9\xb5\xc9\xb5ComponentDefWithMeta\' requires 6 type argument(s).\n    node_modules/ng-qrcode/lib/qr-code.directive.d.ts(13,25): error TS2694: Namespace \'"/ngqrcode-ng8-test/node_modules/@angular/core/core"\' has …
Run Code Online (Sandbox Code Playgroud)

typescript angular angular-library ng-packagr

5
推荐指数
1
解决办法
4439
查看次数