{"_id":"@demacia/ngx-list-filter","_rev":"4-92b1400b95802c6afdaad867bfd19174","name":"@demacia/ngx-list-filter","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@demacia/ngx-list-filter","version":"0.0.1","description":"angular list filter","$schema":"./node_modules/ng-packagr/package.schema.json","repository":{"type":"git","url":"git+https://gitlab.com/zw277856645/ngx-list-filter.git"},"keywords":["angular","list","array","filter","query","mongo","mongodb"],"author":{"name":"wei.zhang"},"license":"MIT","peerDependencies":{"@angular/core":"^8.1.2","zone.js":"^0.9.1","rxjs":"^6.5.1"},"dependencies":{"@demacia/cmjs-lib":"0.0.1","tslib":"^1.9.0"},"devDependencies":{"@angular/common":"8.1.2","@angular/core":"8.1.2","@angular/platform-browser":"8.1.2","@angular/platform-browser-dynamic":"8.1.2","@angular/compiler-cli":"8.1.2","@angular/compiler":"8.1.2","@types/jasmine":"2.5.36","@types/node":"10.14.5","zone.js":"0.9.1","rxjs":"6.5.1","angular-router-loader":"0.8.5","angular2-template-loader":"0.6.2","ts-loader":"5.4.4","jasmine-core":"3.3.0","ng-packagr":"5.1.0","ajv":"6.9.1","karma":"1.5.0","karma-chrome-launcher":"2.0.0","karma-jasmine":"2.0.0","karma-sourcemap-loader":"0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"4.0.2","rimraf":"2.6.1","rxjs-tslint":"0.1.7","tslint":"5.11.0","codelyzer":"5.1.0","typescript":"3.4.5","webpack":"4.19.1","webpack-cli":"3.1.0","webpack-dev-server":"3.1.4"},"main":"bundles/demacia-ngx-list-filter.umd.js","module":"fesm5/demacia-ngx-list-filter.js","es2015":"fesm2015/demacia-ngx-list-filter.js","esm5":"esm5/demacia-ngx-list-filter.js","esm2015":"esm2015/demacia-ngx-list-filter.js","fesm5":"fesm5/demacia-ngx-list-filter.js","fesm2015":"fesm2015/demacia-ngx-list-filter.js","typings":"demacia-ngx-list-filter.d.ts","metadata":"demacia-ngx-list-filter.metadata.json","sideEffects":false,"bugs":{"url":"https://gitlab.com/zw277856645/ngx-list-filter/issues"},"homepage":"https://gitlab.com/zw277856645/ngx-list-filter#readme","_id":"@demacia/ngx-list-filter@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zw277856645","email":"277856645@qq.com"},"dist":{"integrity":"sha512-EL1kTsWQHXhw1oB//o7CRVwU0AlnT4jqHaA9TTyH9fs/LA6QeaGiiQQLfycU5BrkqSFS9luXAsavbviEwUg98w==","shasum":"591cbdc32c12c622d26ad1c9b8812c752a236fa6","tarball":"https://registry.npmjs.org/@demacia/ngx-list-filter/-/ngx-list-filter-0.0.1.tgz","fileCount":36,"unpackedSize":480307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduPm2CRA9TVsSAnZWagAAG8sP/iee42Q2SdCZU+Ee+/Si\nP7yek6tpZfoqe+q1tbjljR6kPWSHYiWMq4oEMSBe60EvmBPdOY3MKIW1pQLU\nBezdRPExN22NN0XD5PQP2WjubaYHemQI3l2ATs9kDtl6XWiqvBkOm0FVa3K7\nMf7FrriiKO2yijccxU3eW+9itO0cwLNKEBUdLyQaZUfP+3BxvQm1/OEIe418\nLK37wa/a7dWdTtSeorTQdAkkBpk1BNXnrY5z6VFqYvxtGhqVO5g4+4b8SEMM\nNfXmuPdDau2Z0HF2eIddgSZLoufO9Tjpu7wEewLMoOm7jgLUwPtx2P1oEzaJ\nO+27UGqHzOkX0fFQcovT/qp9QkSxo0m4tlr0BUJeN+d+2rbDDfF6SHnRK2Bv\n7sSmHASbyEtdvsLyDEKYFFg5K6rDt+7tvtPofi2FfGAJb0g16sdYG0geKGer\nBovxzFzWyNCy2O72nh9WfbTlwKNSCK0oHF+D/hZnZ2CEdFyGFhQNbjNriVau\nC7ajRSeyi0K3NNUzz1Ojk4aSM1QQr6M/RF2LdQdM/Pj3jqdMpKgnY5x4NwwO\nYR2uFlEFqGalhLZBCYqtdtslUOIK91qE87XEyvQsh0mtM7cH+XPzfjZc7mha\nSiIicLJIdQ2kal63Oa8zPwilvoAJVZZB+jGBnrF0/L6uJyqIs1oq3/fgPj+Z\n7FRT\r\n=NFCD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIF0WGkEhL2iTMlBDVVQJzY6VrnrPcEjms+FkpM0pH4AiAIgmdPtoH1U8HMdBSv4dltRXWX7Cxe/RHK/Bgn5zd3lA=="}]},"maintainers":[{"name":"zw277856645","email":"277856645@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-list-filter_0.0.1_1572403638481_0.5077504611421688"},"_hasShrinkwrap":false},"0.0.2":{"name":"@demacia/ngx-list-filter","version":"0.0.2","description":"angular list filter","$schema":"./node_modules/ng-packagr/package.schema.json","repository":{"type":"git","url":"git+https://gitlab.com/zw277856645/ngx-list-filter.git"},"keywords":["angular","list","array","filter","query","mongo","mongodb"],"author":{"name":"wei.zhang"},"license":"MIT","peerDependencies":{"@angular/core":"^8.1.2","zone.js":"^0.9.1","rxjs":"^6.5.1"},"dependencies":{"@demacia/cmjs-lib":"0.0.1","tslib":"^1.9.0"},"devDependencies":{"@angular/animations":"8.1.2","@angular/common":"8.1.2","@angular/core":"8.1.2","@angular/platform-browser":"8.1.2","@angular/platform-browser-dynamic":"8.1.2","@angular/compiler-cli":"8.1.2","@angular/compiler":"8.1.2","@types/jasmine":"2.5.36","@types/node":"10.14.5","zone.js":"0.9.1","rxjs":"6.5.1","angular-router-loader":"0.8.5","angular2-template-loader":"0.6.2","ts-loader":"5.4.4","jasmine-core":"3.3.0","ng-packagr":"5.1.0","ajv":"6.9.1","karma":"1.5.0","karma-chrome-launcher":"2.0.0","karma-jasmine":"2.0.0","karma-sourcemap-loader":"0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"4.0.2","rimraf":"2.6.1","rxjs-tslint":"0.1.7","tslint":"5.11.0","codelyzer":"5.1.0","typescript":"3.4.5","webpack":"4.19.1","webpack-cli":"3.1.0","webpack-dev-server":"3.1.4"},"main":"bundles/demacia-ngx-list-filter.umd.js","module":"fesm5/demacia-ngx-list-filter.js","es2015":"fesm2015/demacia-ngx-list-filter.js","esm5":"esm5/demacia-ngx-list-filter.js","esm2015":"esm2015/demacia-ngx-list-filter.js","fesm5":"fesm5/demacia-ngx-list-filter.js","fesm2015":"fesm2015/demacia-ngx-list-filter.js","typings":"demacia-ngx-list-filter.d.ts","metadata":"demacia-ngx-list-filter.metadata.json","sideEffects":false,"bugs":{"url":"https://gitlab.com/zw277856645/ngx-list-filter/issues"},"homepage":"https://gitlab.com/zw277856645/ngx-list-filter#readme","_id":"@demacia/ngx-list-filter@0.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zw277856645","email":"277856645@qq.com"},"dist":{"integrity":"sha512-6zMmPqxdoJaX4ie12oZqC7N1cDy21AM1MrsUEeZB8qB/Gn4I4L1O5yaXi0Wg/xCrTRrv/r1P0KWvHaXhC/COxw==","shasum":"ff02a0bf5c67ad5766b17626854bdb707b008cac","tarball":"https://registry.npmjs.org/@demacia/ngx-list-filter/-/ngx-list-filter-0.0.2.tgz","fileCount":36,"unpackedSize":480344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd07NVCRA9TVsSAnZWagAAWYgP/22XBe47UTw0QLBMKGKm\nT1KHq7UNIiu42aMzt/TEW5j+fIgzvkwrwVxKwbDf5oFQg3jATP9NMmNaO8T6\nNeBkNcTj2/Ea8toisavLdVcv8GxUyLlbXPWRP0LKmFIFj3LNZoO+9RKdyeqw\n7v2lix0ANBwcPmEe+9R/drIy7LOCnXl7zAweYRrACRIWDTKG3K3sIiOahtfx\nWRzVcMxXCX788Wty8REOxx8+lZshThLdF3kUg/R17GxhXiuv6hPrxv7aZClY\nv1Nhkpx7gfYM6vavvOO/lNw9ASk067YxrANeLHE/rhC6wbmTkzO/HcRWf90D\n6RmA6XdD8DJe53BGJuCVZzAfK81TBq6gTIX/xJ7XAgFE/X6W/hmoSnkf3vbD\nU2lu0u0wX/JDaYiMWQzGkBCgyALHLakjjEhcFVKQ0oYDsD72VlCS+we7UaV5\nnsqRu8OyTRZfCARF2Grl7kE+f1rI21L7G0P4nSRnzl8/KcJXx3pywLn7lD5z\nxcN6+1oq5mv+pS0SGJ1PrMM4Rdsrj22por38mzijIPeQeMs/+UzOfvhAykgM\nSjDCb0S33O4CHP8fALYlfCWZdcMrr5IzhQSsd1cZvhQKz1dxc28a9+yYwUYR\nyhBQJC34/eBPhLvioDwtbuitgkOUWen2qZZD+c9HOZFdt4Zksg9eAPOvNXPm\nEwzq\r\n=fOpK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAKI01UJIlscYHdrI6oO0c/b9gVd7hoFaxbKWRtKrqmAiBopTur5R+cFMaJzcqopGmNTf69RPex/GA6t24gF56mLw=="}]},"maintainers":[{"name":"zw277856645","email":"277856645@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-list-filter_0.0.2_1574155092713_0.4173065444838939"},"_hasShrinkwrap":false},"0.0.3":{"name":"@demacia/ngx-list-filter","version":"0.0.3","description":"angular list filter","$schema":"./node_modules/ng-packagr/package.schema.json","repository":{"type":"git","url":"git+https://gitlab.com/zw277856645/ngx-list-filter.git"},"keywords":["angular","list","array","filter","query","mongo","mongodb"],"author":{"name":"wei.zhang"},"license":"MIT","peerDependencies":{"@angular/core":"^8.1.2","zone.js":"^0.9.1","rxjs":"^6.5.1"},"dependencies":{"@demacia/cmjs-lib":"0.0.1","tslib":"^1.9.0"},"devDependencies":{"@angular/animations":"8.1.2","@angular/common":"8.1.2","@angular/core":"8.1.2","@angular/platform-browser":"8.1.2","@angular/platform-browser-dynamic":"8.1.2","@angular/compiler-cli":"8.1.2","@angular/compiler":"8.1.2","@types/jasmine":"2.5.36","@types/node":"10.14.5","zone.js":"0.9.1","rxjs":"6.5.1","angular-router-loader":"0.8.5","angular2-template-loader":"0.6.2","ts-loader":"5.4.4","jasmine-core":"3.3.0","ng-packagr":"5.1.0","ajv":"6.9.1","karma":"1.5.0","karma-chrome-launcher":"2.0.0","karma-jasmine":"2.0.0","karma-sourcemap-loader":"0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"4.0.2","rimraf":"2.6.1","rxjs-tslint":"0.1.7","tslint":"5.11.0","codelyzer":"5.1.0","typescript":"3.4.5","webpack":"4.19.1","webpack-cli":"3.1.0","webpack-dev-server":"3.1.4"},"main":"bundles/demacia-ngx-list-filter.umd.js","module":"fesm5/demacia-ngx-list-filter.js","es2015":"fesm2015/demacia-ngx-list-filter.js","esm5":"esm5/demacia-ngx-list-filter.js","esm2015":"esm2015/demacia-ngx-list-filter.js","fesm5":"fesm5/demacia-ngx-list-filter.js","fesm2015":"fesm2015/demacia-ngx-list-filter.js","typings":"demacia-ngx-list-filter.d.ts","metadata":"demacia-ngx-list-filter.metadata.json","sideEffects":false,"bugs":{"url":"https://gitlab.com/zw277856645/ngx-list-filter/issues"},"homepage":"https://gitlab.com/zw277856645/ngx-list-filter#readme","_id":"@demacia/ngx-list-filter@0.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zw277856645","email":"277856645@qq.com"},"dist":{"integrity":"sha512-uYGxvb5sPNR9ygvIKdPTmPB3RFvf7N/jdaMgRb63kv8YqZigs+1RMRYuoaBpDoJ9+SAJSiiGvbtspJ9wN3R9kQ==","shasum":"7274e2fd2a235ff80ba27ac9329c40cbb255653e","tarball":"https://registry.npmjs.org/@demacia/ngx-list-filter/-/ngx-list-filter-0.0.3.tgz","fileCount":36,"unpackedSize":495026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd081aCRA9TVsSAnZWagAAEeIQAIrrLoTqz3AjLG/b8+3/\nltJG4C1/4VE3McwKo8D9KVAmraHsUwwujKy+KI88Y1jvi1B0Vtgqte4zXgIT\nEeLdjF7ZxnMg4eWG/xTFYrRPfhEUbx5p3ZxniQyhZetK3p4+hSEBGs/lc+jq\nOVN+vjaZsOycHOvVLe4VlzxowItm1egUplH1XLHQ6hoJFITcSLTWUU2yhKDJ\nY1ug3cSFmfuONdjuaH6AecY7sX+h5gCzt08YvUaAeUxIF8K+DxjO3j/0kzHJ\nG3ZEWTZ4AYcEtJH9R1Vym0AK9Lv5B12IvV14/S/Hk3c2cM7UBw7b2SRm/iCz\nInHy3lhf3qyeWDznk6Nt7rFE0GP3wvE1Mlp9CkAcBkxRd7cVxVw5XHoCKz92\nyh1G4y91QGF7kscoiMPeKyTHr+vPulKOFmHU+G6CfQRN84FDely/znCQhGsr\nrEx/f84OIHDa1AS5t8LVxaBwrXZNVQVqsDa1NtsLLs+wFwxa0maQnvt5bjX9\nKxjXDwu3MqqZ7o5flR5LoE97jF4Tze/3lUnvB+RIxhH+Mn36AnkjqtZrTgxM\nkfvVfQTP1j3kCSSTldUTWRZGidfKRXjQ9Ja2HoS/P/n4sO920jPSE9S2S/Wl\noIeJR2nBGmQ7N7obAggISk5jFqe3qmNkDsMXJuggsM+cPb97P0VjStUZyC4T\nCLQZ\r\n=zUgc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMfZYAcd9wRjxhUqlCvZLppDTyL0XChxj1DC3ivTSbaAiAwndels7aTf5OnCkyPzR4bdgxvaEHGzstRQwBoP/0QWw=="}]},"maintainers":[{"name":"zw277856645","email":"277856645@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-list-filter_0.0.3_1574161753727_0.17747806567771662"},"_hasShrinkwrap":false},"0.1.0":{"name":"@demacia/ngx-list-filter","version":"0.1.0","description":"angular list filter","$schema":"./node_modules/ng-packagr/package.schema.json","repository":{"type":"git","url":"git+https://gitlab.com/zw277856645/ngx-list-filter.git"},"keywords":["angular","list","array","filter","query","mongo","mongodb"],"author":{"name":"wei.zhang"},"license":"MIT","peerDependencies":{"@angular/core":"^8.1.2","zone.js":"^0.9.1","rxjs":"^6.5.1"},"dependencies":{"@demacia/cmjs-lib":"0.0.1","tslib":"^1.9.0"},"devDependencies":{"@angular/animations":"8.1.2","@angular/common":"8.1.2","@angular/core":"8.1.2","@angular/platform-browser":"8.1.2","@angular/platform-browser-dynamic":"8.1.2","@angular/compiler-cli":"8.1.2","@angular/compiler":"8.1.2","@types/jasmine":"2.5.36","@types/node":"10.14.5","zone.js":"0.9.1","rxjs":"6.5.1","angular-router-loader":"0.8.5","angular2-template-loader":"0.6.2","ts-loader":"5.4.4","jasmine-core":"3.3.0","ng-packagr":"5.1.0","ajv":"6.9.1","karma":"1.5.0","karma-chrome-launcher":"2.0.0","karma-jasmine":"2.0.0","karma-sourcemap-loader":"0.3.7","karma-spec-reporter":"0.0.30","karma-webpack":"4.0.2","rimraf":"2.6.1","rxjs-tslint":"0.1.7","tslint":"5.11.0","codelyzer":"5.1.0","typescript":"3.4.5","webpack":"4.19.1","webpack-cli":"3.1.0","webpack-dev-server":"3.1.4"},"main":"bundles/demacia-ngx-list-filter.umd.js","module":"fesm5/demacia-ngx-list-filter.js","es2015":"fesm2015/demacia-ngx-list-filter.js","esm5":"esm5/demacia-ngx-list-filter.js","esm2015":"esm2015/demacia-ngx-list-filter.js","fesm5":"fesm5/demacia-ngx-list-filter.js","fesm2015":"fesm2015/demacia-ngx-list-filter.js","typings":"demacia-ngx-list-filter.d.ts","metadata":"demacia-ngx-list-filter.metadata.json","sideEffects":false,"bugs":{"url":"https://gitlab.com/zw277856645/ngx-list-filter/issues"},"homepage":"https://gitlab.com/zw277856645/ngx-list-filter#readme","_id":"@demacia/ngx-list-filter@0.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"zw277856645","email":"277856645@qq.com"},"dist":{"integrity":"sha512-OLTa9W76if2ZsQ530Mu0oJzA5PCby9IEObcVuiFWrk7J3df79xK2xqfNB5Hj6/8A0jnAP7F5oOaNvPt1WJKZdQ==","shasum":"8b1cd872c161038c61d3e2e32cfe851b59ecee4b","tarball":"https://registry.npmjs.org/@demacia/ngx-list-filter/-/ngx-list-filter-0.1.0.tgz","fileCount":36,"unpackedSize":353050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0+W5CRA9TVsSAnZWagAAthIP/RR5eU2Cbab0PTx37Qs5\naCr61DaPX9SDgNHvhT19Zle1UMtSyJBP98CDxorxLjDNouEH7GtN1WtAFvok\n5/mcHSZ/oduWa2wH8pjeHKEcLk088gfEEX/NZ3OsG68i8WZgwJcXnRkTmfdc\n1xxn2fnjXq1+LttE4T/Qp0n3+w3mQIcQZvgrbsz1H/cb8Dckvn6wbriBFpX1\nchs1coyQNKlzx16rwHSPv4F1V1CPfOnIQiGWGE8aze/m0Tyf88XIOPy7WnL2\nDGgYoB4KzEVuAiz1CAZydovbnTXF6Dq64+Cvo/aVa/hTmED4WOkXDvD4S6Zh\nj+iOidkqdRsPZn5pxKteVPCuxdo1NAkJoxeSxehkcUcmq0g/fzhm38Qpyr8D\npxoiRkee6hLp3/uVxb1chcPZ4CLx5C7X+dJyLxbG9RFANtvwiHXskzcix5Sy\nUo4lVf232maja61iw0rguAu1x+nAN7pUXf1vDVOyu6zoDzEEbGylVC54Ds0r\nbPOYn0ItxNisK2dxDXDJjboieZqzBVfzqNCNEworpJnFa+zhWzJ1TS1Xrxq0\nORIoKXbZkJVI475oNobJ0lt99T4t/GBJ1p5A46mHiQKtaFd2RxKUXknp8vJ8\nO1Tlpnh+atd6J/tn9yU6XXfPTs1S6MDZ4ub2sI70ytgIyuULesc6VouYZsa7\nGeFj\r\n=t3fr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjbAwYixYuq1ZemwmOyOpOclEQjjyq/fegF/Ae47PpzwIgG/m1JkAM2n6CibAxqxZlOLZytPff+XQnowANZwmsy+Q="}]},"maintainers":[{"name":"zw277856645","email":"277856645@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-list-filter_0.1.0_1574167992682_0.6682936474260144"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-30T02:47:18.222Z","0.0.1":"2019-10-30T02:47:18.649Z","modified":"2022-04-05T03:43:12.579Z","0.0.2":"2019-11-19T09:18:12.963Z","0.0.3":"2019-11-19T11:09:13.854Z","0.1.0":"2019-11-19T12:53:12.867Z"},"maintainers":[{"name":"zw277856645","email":"277856645@qq.com"}],"description":"angular list filter","homepage":"https://gitlab.com/zw277856645/ngx-list-filter#readme","keywords":["angular","list","array","filter","query","mongo","mongodb"],"repository":{"type":"git","url":"git+https://gitlab.com/zw277856645/ngx-list-filter.git"},"author":{"name":"wei.zhang"},"bugs":{"url":"https://gitlab.com/zw277856645/ngx-list-filter/issues"},"license":"MIT","readme":"# angular 列表过滤管道\n类似 mongodb 查询语法，使用示例如下\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:queryObject\"></ng-container>\n```\n\n## ✨ 插件特性\n- 全局参数配置\n- 与($and)，或($or)，非或($nor)，非($not)\n- <($lt)，<=($lte)，>($gt)，>=($gte)\n- 在指定范围之内($in)，不在指定范围之内($nin)\n- 范围($between)\n- 相等比较($eq)\n- 不相等($neq)\n- 深度相等比较($deepEquals)\n- 属性值存不为 null、undefined、空字符串、空数组($exists)\n- 正则($reg)\n- 日期在之前($before)\n- 日期在之后($after)\n- 数组包含某值($contains)\n- 数组包含全部($all)\n- 数组包含任意($any)\n- 数组长度或对象属性个数值($size)\n- 取模($mod)\n- 嵌入对象匹配，使用点记法(a.b.c)\n- 数组内对象匹配($elemMatch)\n- 自定义判断逻辑($cb)\n\n## 📦 安装\n\n> npm install @demacia/ngx-list-filter --save\n\n## 🔨 使用\n引入module\n\n``` js\nimport { ListFilterModule } from '@demacia/ngx-list-filter';\n\n@NgModule({\n    imports: [\n        ListFilterModule\n    ]\n})\nexport class AppModule {\n}\n```\n\n## 🎨 API\n\n#### 1. 全局参数配置\n可在 module 中配置全局参数，使用示例如下\n\n``` js\n@NgModule({\n    ...\n    providers: [\n        ...\n        {\n            provide: LIST_FILTER_CONFIG,\n            useValue: {\n                regFlags: 'gmi',\n                valueGetter: (obj: any, key: string) => obj[key]\n            }\n        }\n    ]\n})\nexport class XxxModule {\n}\n```\n\n##### regFlags\n正则匹配标志，默认值`i`\n\n##### valueGetter\n取值器，根据该方法获取 key 对应的 value。默认支持点记法(a.b.c)\n\n#### 2. $and、$or、$nor、$not\n\n##### a）最外层(尚没有具体属性)逻辑连接\n\n``` html\n<!--\n下面三种方式等效\n\n注意:\n1. $and 可省略，默认没有操作符连接的情况就是 $and\n2. 多个查询属性之间的逻辑连接可用对象 {prop1:..., prop2:..., ...}，也可用数组 [{prop1:...}, {prop2:...}, ...]\n-->\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$lt:30}, name:{$reg:'xxx'}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{$and:{age:{$lt:30}, name:{$reg:'xxx'}}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{$and:[{age:{$lt:30}}, {name:{$reg:'xxx'}}]}\"></ng-container>\n```\n\n##### b）某具体属性下的逻辑连接\n\n``` html\n<!--\n下面三种方式等效\n\n注意:\n1. $and 可省略，默认没有操作符连接的情况就是 $and\n2. 多个过滤条件之间的逻辑连接可用对象 {query1:..., query2:..., ...}，也可用数组 [{query1:...}, {query2:...}, ...]\n-->\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$gt:30, $lt:80}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$and:{{$gt:30}, {$lt:80}}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$and:[{$gt:30}, {$lt:80}]}}\"></ng-container>\n```\n\n#### $lt、$lte、$gt、$gte\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$gte:30, $lte:80}}\"></ng-container>\n```\n\n#### $in、$nin\n\n##### a）原始类型值在指定范围之内\n\n``` html\n<!--\nage 是原始类型\n\n下面两种方式等效，筛选条件为数组时，$in 可省略（不推荐）\n-->\n<ng-container *ngFor=\"let rec of list | listFilter:{age:[28, 30, 60]}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$in:[28, 30, 60]}}\"></ng-container>\n```\n\n##### b）数组包含指定范围内的值\n不推荐，请优先使用数组相关的操作符\n\n``` html\n<!-- likes 是数组类型，注意只要数组包含任意一个筛选值即可，与 $any 操作符同效 -->\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$in:['apple', 'banana']}}\"></ng-container>\n```\n\n#### $between（[m, n]）\n判断值大小在 m 到 n 之间，即 m < x < n\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$between:[20, 40]}}\"></ng-container>\n```\n\n#### $eq、$neq\n相等、不相等判断\n\n``` html\n<!--\n下面两种方式等效\n\n注意:\n1. $eq 可省略，默认没有操作符的情况就是 $eq\n2. 采用的是相等比较(==)，类型不同时会自动转换，比如字符串和数字比较时会先转化为字符串。字符串如果需要部分匹配，请使用正则操作符 $reg\n-->\n<ng-container *ngFor=\"let rec of list | listFilter:{name:'xxx'}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{name:{$eq:'xxx'}}\"></ng-container>\n```\n\n$eq 也可用于数组，但是只能使用原始类型的筛选值，功能等效于操作符 $contains\n\n``` html\n<!-- 下面四种方式等效，推荐使用 $contains，使语义更明确 -->\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:'apple'}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$eq:'apple'}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$contains:'apple'}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$in:['apple']}}\"></ng-container>\n```\n\n#### $deepEquals\n对象深度比较，如果系统已加载了`lodash`或`underscore`库，将使用它们的`isEqual`方法，否则简单使用`JSON.stringify`比较序列化后的字符串是否相等\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{addr:{$deepEquals:{street:'xxx', codes:['aaa','bbb']}}}\"></ng-container>\n```\n\n#### $exists\n判断属性是否存在，属性值不为 null、undefined、空字符串、空数组 时视为存在\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{children:{$exists:true}}\"></ng-container>\n```\n\n#### $reg\n正则匹配，默认标志为`i`，即忽略大小写。可由全局配置`regFlags`修改\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{name:{$reg:'xxx'}}\"></ng-container>\n```\n\n如果直接使用了正则，可省略 $reg 操作符\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{name:/xxx/i\"></ng-container>\n```\n\n可使用 $flag 设置正则标志位，优先级高于全局配置\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{name:{$reg:'xxx', $flags:'ig'}}\"></ng-container>\n```\n\n$reg 也可用于数组，数组中任意一个元素匹配成功即可\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$reg:'xxx'}}\"></ng-container>\n```\n\n#### $before、$after\n日期比较，采用 Date.parse 解析日期字符串\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{birth:{$before:'2019/8/1 12:00:00'}}\"></ng-container>\n<ng-container *ngFor=\"let rec of list | listFilter:{birth:{$before:1565544805000}}\"></ng-container>\n```\n\n#### $contains\n判断数组是否包含某值，注意是相等比较，若需部分匹配字符串，请使用 $reg\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$contains:'apple'}}\"></ng-container>\n```\n\n#### $all\n判断数组是否包筛选数组全部的值\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$all:['apple', 'banana']}}\"></ng-container>\n```\n\n#### $any\n判断数组是否包筛选数组任意一个值\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$any:['apple', 'banana']}}\"></ng-container>\n```\n\n#### $size\n判断数组长度或对象属性个数为指定值\n\n``` html\n<!-- 数组长度 -->\n<ng-container *ngFor=\"let rec of list | listFilter:{likes:{$size:3}}\"></ng-container>\n\n<!-- 对象属性个数 -->\n<ng-container *ngFor=\"let rec of list | listFilter:{addr:{$size:3}}\"></ng-container>\n```\n\n#### $mod（[m, n]）\n数字取模判断，x % m = n\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$mod:[2, 1]}}\"></ng-container>\n```\n\n#### 点记法\n深度属性查找，使用全局配置的`valueGetter`获取健名对应的键值。默认实现的取值器可识别点记法，\n如：list = [ { addr: { street: 'xxx' } }, ... ]，当需要对 street 查找时，需使用 { 'addr.street': { $reg: 'xxx' } }\n\n\n#### $elemMatch\n数组对象匹配，当数组值为对象，且需要对其查询时使用，如：list = [ { users: [ { name: 'aaa' }, { name: 'bbb' } ] }, ... ]，\n对 name 查找时需使用 { users: { $eleMatch: { name: { $reg: 'xxx' } } } }。\n注意 $eleMatch 中可使用任意前面提及的操作符，包括 $eleMatch 本身\n\n#### $cb\n自定义判断逻辑，当插件所提供的操作符无法满足需求时使用\n\n``` html\n<ng-container *ngFor=\"let rec of list | listFilter:{age:{$cb:logicFunction}}\"></ng-container>\n```\n\n#### 本管道也可当做服务使用\n\n``` js\nexport class XxxComponent {\n    \n    constructor(private listFilter: ListFilterPipe) {\n        list = listFilter.transform(list, { name: { $reg: 'xxx' } });\n    }\n\n}\n```\n","readmeFilename":"README.md"}