#angular #angular-library
Вопрос:
У меня в библиотеке есть два компонента с именами lib-анкета и lib-выбор.
Компонент lib-анкета использует lib-варианты, подобные этому, в своем html-файле.
<div class="row">
<div class="col-xs-12">
<lib-choices
[name]="name"
[id]="id"
[choices]="choices">
</lib-choices
</div>
</div>
Но так как у меня есть изменения в моей lib-анкете, например, добавление другого ввода, например, такого:
<div class="row">
<div class="col-xs-12">
<lib-choices
[name]="name"
[id]="id"
[multipleChoices]=true
[choices]="choices">
</lib-choices
</div>
</div>
Добавленный ввод, который является [MultipleChoice], в настоящее время не объявлен в lib-вариантах в производстве, но я объявил его в своем локальном.
Я попытался сначала создать lib-варианты локально, затем создать lib-анкету, но она не создается, так как не может принять мой новый ввод, поскольку он еще не реализован в производстве.
Мой вопрос в том, как создать оба моих компонента в библиотеке локально?
Комментарии:
1. Являются ли эти два компонента двумя разными библиотечными модулями? Согласно вашему вопросу, они оба находятся в одной библиотеке. Тогда почему и как вы строите их по отдельности?
2. Да, у них разные модули. При построении я использую команду ng build @lib/анкета и ng build @lib/выбор .
3. Я использовал команду ng g library @lib/component -p lib —файл ввода /общедоступный api для создания обоих компонентов.
Ответ №1:
Вы можете использовать ссылку npm, которая создает символическую ссылку в каталоге node_modules зависимых приложений/библиотек. Это включает в себя:
- Запуск
npm link
в местной библиотеке - Запуск
npm link @local-library-name
в главном приложении - Но убедитесь, что вы установили «preserveSymlinks»: true в файле angular.json для приложений/библиотек вашего хоста.:
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"preserveSymlinks": true,
"tsConfig": "projects/button/tsconfig.lib.json",
"project": "projects/button/ng-package.json"
}
},
В вашем случае вы можете сделать следующее:
- Войдите в
@lib/choices
каталог и запуститеnpm link
- Войдите в
@lib/questionnaire
каталог runnpm link @lib/choices
и выполните сборку. Вы также можете сделатьnpm link
это здесь, чтобы вы могли использовать его в главном приложении с помощьюnpm link @lib/questionnaire
Комментарии:
1. Должен ли я по-прежнему выполнять сборку ng @lib/компонента , а также обновлять свой package.json для пути к файлу? Я попытался выполнить npm-ссылку и проверил свой angular.json как для библиотеки, так и для хост-приложения, в котором обе «Предварительные ссылки» установлены как истинные. Но хост-приложение не получает мои изменения для обоих.