为什么没有反映node_modules中Angular模板的更改

时间:2017-09-11 17:01:52

标签: angular node-modules

我正在尝试更新node_modules文件夹中的html,当我更改它时不会更新。是否无法更新node_modules中的文件?

我有一个导入弹出模块的项目

 import {PopupModule} from 'ng2-opd-popup';

我需要能够更改此文件夹路径中存在的代码(/node_modules/ng2-opd-popup/components/popup/popup.component.html

div id="ng2-opd-popup-main"  *ngIf="visible" [ngClass]="mainClass" [ngStyle]="mainStyle">
<div class="row">
    <div style="display: inline-block;width:100%">
       <div id="ng2-opd-popup-well"  [ngStyle]="wellStyle" class="ng2-opd-popup-well ng2-opd-popup-well-sm">{{popupService.options.header}}</div>
    </div>
<div style="margin:20px;">
    <ng-content></ng-content>
    <div *ngIf="popupService.options.showButtons" style="margin-bottom:20px;margin-top:20px;float: right">           
        <div *ngIf="popupService.options.showConfirm">
        <button  id="confirmBtn" [ngClass]="confirmBtnStyle"  (click)="confirmYes()">{{popupService.options.confirmBtnContent}}</button>
        </div>
     <div *ngIf="popupService.options.showCancel">
        <button id="cancelBtn" [ngClass]="cancelBtnStyle" type="reset" (click)="confirmNo()">{{popupService.options.cancelBtnContent}}</button>
        </div>
    </div>
</div>

让我们说我想完全取消取消按钮。当我更改它并从我的项目中保存它时,即使html被更改,它也不会更新。

2 个答案:

答案 0 :(得分:2)

  

好的,我在这里真的很茫然。我想要更改的包是ng2-opd-popup位于此处。我可以进入node_modules > components > popup文件夹并修改html,但更改不会更新。 git位置只显示一个示例项目,而不是实际的节点模块。这只能通过NPM安装和查看。

请勿更改node_modules 中的任何内容。这不是你的代码。它的库代码。它的第三方代码。每当有人运行npm install,或者重新克隆您的仓库,或者当仓库版本更新时,它都会被更换/更新。您甚至无法知道在运行时是否使用了特定文件;组件模板的HTML文件可能不是。包裹是一个黑盒子。根据库的打包方式,模板很可能在发布包之前在构建步骤中预编译。

在这种情况下,例如,TS已经预编译为JS,因此您对TS文件所做的任何更改都不会产生任何影响。当你说import {PopupComponent} from 'ng2-opd-popup';时,你实际上正在导入一个JS文件。 HTML已经预编译并内嵌到popup.component.js中 - 这是构建用于Angular的库时使用的典型方法。因此,您对popup.component.html所做的任何更改都将被完全忽略。

如果开发人员有远见添加你想要的功能 - 隐藏取消按钮会很好 - 但是嘿,这就是生活。

由于没有这样的功能,然后消除按钮,你可以用CSS隐藏它。最好在src/styles.csssrc/styles.scss中全局执行此操作,至少出于测试目的:在您使用此组件的组件的.css文件中,或在全局范围内:< / p>

#cancelBtn { display: none; }

如果您真的想要对组件进行更广泛的自定义,那么在某些情况下,无法使用可用选项,CSS或可能的JS,那么请向开发人员请求它们。也许如果它们是其他用户可能想要的东西,它们将适应您。否则,作为最后的手段,你最终可能会做出所谓的“分叉”和“#34;存储库。这意味着制作您自己的整个仓库副本,您可以按原样编辑它,构建原始仓库的方式与原始仓库相同,通常使用npm run build等命令,并保持与任何同步未来对原版的改动很容易。

答案 1 :(得分:1)

我不确定您所看到的问题到底是什么,您所做的更改应该是可见的。或者您使用的是webpack之类的内容,更改后它不会自动刷新吗?因为更改检测通常不会查看node_modules,所以在重新启动服务器之前,它不会选择它。

无论如何,你不应该更改node_modules中的任何内容 - 包不是要直接修改的。您应该尝试在软件包提供的功能范围内工作,找到一个能够满足您需求的不同功能,或者您是否感到野心勃勃,并修改原始代码。在这种情况下,看起来您可以使用第一个选项 - 它有一个showCancel选项,所以请查看文档以了解如何设置它。